c++结构体传参

复制代码
//
// Created by 徐昌真 on 2024/10/5.
//
#include <iostream>
using namespace std;

//定义一个结构体
struct Circle{
    int x, y, r;
};

//定义一个可以修改结构体内容的函数
void movePoint(Circle c, int x, int y){
    c.x += x;
    c.y += y;
}

//定义一个可以输出结构体内容的函数
void printCircle(Circle c){
    cout << '(' << c.x << ',' << c.y << ") " << c.r << endl;
}

int main() {

    //创建一个结构体
    Circle c = {1,2,3};
    //调用修改结构体的函数
    movePoint(c,1,2);
    //调用输出结构体的函数
    printCircle(c);

    return 0;
}

我们这样子写完之后 会发现修改的结果并没有生效 这是因为值的改变只在函数的内部 并没有在main函数内部改变 我们需要用指针 在地址里面修改值 才可以

这是输出结果

这是修改后的代码

复制代码
//
// Created by 徐昌真 on 2024/10/5.
//
#include <iostream>
using namespace std;

//定义一个结构体
struct Circle{
    int x, y, r;
};

//定义一个可以修改结构体内容的函数
void movePoint(Circle* c, int x, int y){
    c->x += x;
    c->y += y;
}

//定义一个可以输出结构体内容的函数
void printCircle(Circle c){
    cout << '(' << c.x << ',' << c.y << ") " << c.r << endl;
}

int main() {

    //创建一个结构体
    Circle d = {1,2,3};
    //调用修改结构体的函数
    movePoint(&d,1,2);
    //调用输出结构体的函数
    printCircle(d);

    return 0;
}

我们只需传入指针类型的数据即可

相关推荐
浪飘4 分钟前
golang读写锁
开发语言·数据库·golang
老王熬夜敲代码14 分钟前
Etcd使用
c++·微服务·etcd
2301_7890156228 分钟前
算法与数据结构——排序算法大全
c语言·开发语言·数据结构·c++·算法·排序算法·visual studio
学习编程的Kitty31 分钟前
JavaEE初阶——多线程(1)初识线程与创建线程
java·开发语言·java-ee
勤奋菲菲43 分钟前
Egg.js 完全指南:企业级 Node.js 应用框架
开发语言·javascript·node.js
光头闪亮亮1 小时前
基于 wxWidgets 框架的桌面应用程序-WebView 浏览器控件与Go后端数据交互
c++
蒂法就是我1 小时前
java集合类的底层类是哪个
java·开发语言
无限进步_1 小时前
冒泡排序的多种实现方式详解
c语言·数据结构·c++·算法
兮山与1 小时前
算法7.0
算法
ajassi20002 小时前
开源 C++ QT QML 开发(十六)进程--共享内存
c++·qt·开源