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;
}

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

相关推荐
旺仔老馒头.3 分钟前
【C++】类和对象(三)
开发语言·c++·程序人生·类和对象
Zklys3 分钟前
Cmake的学习笔记step1
c++·笔记·学习
右耳朵猫AI4 分钟前
Java & JVM技术周刊 2026年第19周
java·开发语言·jvm
zincsweet6 分钟前
C++ 实现进程池:主从架构、管道通信与任务调度
linux·c++
han_hanker6 分钟前
Java 对象序列化
java·开发语言
通信小呆呆7 分钟前
Hankel结构及其快速算法详解
线性代数·算法·机器学习
zhojiew7 分钟前
通过Toxiproxy从原理到实践理解混沌工程
开发语言·php
四代水门7 分钟前
服务端倒带(Server-Side Rewind)命中判定系统
java·前端·算法
吃好睡好便好9 分钟前
矩阵的左除和右除
人工智能·学习·线性代数·算法·矩阵
雪之下雪乃的代码日记11 分钟前
认识Java中集合框架
java·开发语言·笔记