c/c++传值和传引用的区别

传值

cpp 复制代码
#include<stdio.h>

void increment(int x) {
    x++;
}

int main() {
    int num = 5;
    increment(num);
    printf("num %d", num);

    return 0;
}

这段代码的目的是增加num的值,但在increment函数中使用的是传值方式传递参数,所以num在increment函数中只是被复制了一份,对复制的值的增加不会影响到原来的num。因此,即使在increment函数中增加了x的值,num的值在main函数中仍然是5。要使increment函数能够真正地增加num的值,可以通过传递指针的方式修改num的值。下面是修改后的代码:

cpp 复制代码
#include<stdio.h>

void increment(int* x) {
    (*x)++;
}

int main() {
    int num = 5;
    increment(&num);
    printf("num %d", num);

    return 0;
}

这个修改后的版本中,increment函数接受一个指向整数的指针,通过这个指针可以直接修改num的值。在调用increment函数时,使用&num来获取num的地址,这样increment函数中对x的操作就会直接影响到num的值。

相关推荐
海绵宝宝转agent16 分钟前
LeetCode100 二叉树个人题解
算法·leetcode·深度优先
octopus_c22 分钟前
C++ 模板详解:函数模板、类模板、特化与分离编译
开发语言·c++·算法
東隅已逝,桑榆非晚28 分钟前
算法1. 双指针法-移动零
c++·算法
CQU_JIAKE2 小时前
11.1[A]
算法
小郎君6582 小时前
(六)el-cascader 的展示值为什么不能直接 join:emitPath、路径还原与多选去重
vue.js·算法
悠仁さん2 小时前
【C++】set map 使用
java·前端·c++
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】ChatServer问题修复
c++·学习·ai·大模型·sdk
扶尔魔ocy3 小时前
【QT C++】常用设计模式
c++·设计模式
晚风予卿云月3 小时前
【C++高并发内存池】 2.ThreadCache设计
开发语言·c++·高并发内存池·tcmalloc
郝学胜-神的一滴3 小时前
游戏设计:原型与开发 19:U3D工位布置与性格说明书
人工智能·算法·unity·unreal engine·游戏策划·游戏设计