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

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

相关推荐
iiiiii114 分钟前
【论文阅读笔记】IDAQ:离线元强化学习中的分布内在线适应
论文阅读·人工智能·笔记·学习·算法·机器学习·强化学习
秋深枫叶红5 分钟前
嵌入式第二十三篇——数据结构基本概念
linux·数据结构·学习·算法
lilv665 分钟前
visual studio 2026中C4996错误 ‘operator <<‘: 被声明为已否决
c++·ide·visual studio
m***667311 分钟前
Python 爬虫实战案例 - 获取社交平台事件热度并进行影响分析
开发语言·爬虫·python
Zsy_05100312 分钟前
【数据结构】二叉树介绍及C语言代码实现
c语言·数据结构·算法
Ayanami_Reii12 分钟前
基础数学算法-移棋子游戏
数学·算法·游戏·博弈论·sg函数
谁刺我心14 分钟前
蓝桥杯C++常用STL
c++·算法·蓝桥杯
wubba lubba dub dub75017 分钟前
第二十七周 学习周报
学习·算法·机器学习
IMPYLH18 分钟前
Lua 的 select 函数
java·开发语言·笔记·后端·junit·游戏引擎·lua
小白程序员成长日记20 分钟前
力扣每日一题 2025.11.30
数据结构·算法·leetcode