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函数中使用的是传值方式传递参数,所以numincrement函数中只是被复制了一份,对复制的值的增加不会影响到原来的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的值。

相关推荐
surtr112 分钟前
全源最短路封装模板(APSP,Floyd求最小环,Floyd求最短路,Johnson算法)
c++·算法·数学建模·动态规划·图论
梭七y37 分钟前
【力扣hot100题】(105)三数之和
数据结构·算法·leetcode
Morwit1 小时前
如何使用CMake构建Qt新项目
开发语言·c++·qt
zmzb01031 小时前
C++课后习题训练记录Day62
开发语言·c++
fpcc1 小时前
C++23中的模块应用说明之二整体说明和导出控制
c++·c++23
我想吃余2 小时前
【C++篇】C++11:线程库
开发语言·c++
CSDN_RTKLIB2 小时前
【静态初始化与动态初始化】术语对比
开发语言·c++
WhereIsMyChair2 小时前
DPO 核心损失函数β调大可以控制不偏离ref模型太远
人工智能·算法·机器学习
智者知已应修善业2 小时前
【组合数】2024-3-16
c语言·c++·经验分享·笔记·算法
天上飞的粉红小猪3 小时前
线程同步与互斥
linux·开发语言·c++