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的值。

相关推荐
apcipot_rain6 小时前
C++转Java日记(02)
java·开发语言·c++
杜 硕7 小时前
从零开始的C++生活——第七讲——02
开发语言·c++·生活
Rabitebla15 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
西西弗Sisyphus17 小时前
C++ 超时互斥锁(Timed Mutex):std::timed_mutex 与 std::unique_lock
c++
其实防守也摸鱼19 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
今天要早睡_19 小时前
C++01_入门基础复习
开发语言·c++
Nuanyt19 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
Fuyo_11191 天前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
§ꦿCFོ༉1 天前
嵌入式八股—C语言入门学习(一)
c语言·编程语言·嵌入式八股文