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

相关推荐
江屿风13 小时前
【c++笔记】类和对象流食般投喂(上)
开发语言·c++·笔记
是个西兰花13 小时前
单列模式和C++中的类型转换
c++·单例模式·设计模式·rtti
江汉似年13 小时前
强化学习中的 On-policy 与 Off-policy 全面解析
人工智能·深度学习·算法·rl
诙_13 小时前
C++代码实践应用
开发语言·c++
谙弆悕博士13 小时前
【附C语言源码】从零实现命令行贪吃蛇游戏
c语言·开发语言·学习·游戏·游戏程序·小游戏·贪吃蛇
code bean13 小时前
【LangChain 】 自定义解析器实战指南:从原理到 10 个业务场景落地
算法·langchain
Little At Air14 小时前
LinuxOS阻塞队列模型(单生产者单消费者)
linux·数据结构·c++
念恒1230614 小时前
基础IO(一切皆文件)
linux·c语言·c++·算法
d111111111d14 小时前
MQTT+STM32+云平台+AT命令的编写
服务器·笔记·stm32·单片机·嵌入式硬件·算法
铁皮哥14 小时前
【力扣题解】LeetCode 25. K 个一组翻转链表
java·数据结构·windows·python·算法·leetcode·链表