C语言基础-值传递和指针传递

在C语言中,函数参数传递主要有两种方式:值传递(Pass by Value)和指针传递(Pass by Reference,尽管在C中并不直接称为"Pass by Reference",但指针的使用在效果上类似)。这两种方式在处理函数参数时有明显的不同。

值传递(Pass by Value)

在值传递中,函数参数是通过值的副本进行传递的。也就是说,当你传递一个参数给函数时,C语言会在栈上为这个参数创建一个副本,并将这个副本传递给函数。函数内部对参数所做的任何修改都不会影响到原始数据,因为它操作的是参数的副本。

例如:

#include <stdio.h>  
  
void modifyValue(int x) {  
    x = 10; // 修改的是参数的副本  
}  
  
int main() {  
    int num = 5;  
    modifyValue(num);  
    printf("%d\n", num); // 输出5,而不是10  
    return 0;  
}

在这个例子中,modifyValue函数接收一个整数x的副本,并将其修改为10。但是,这个修改对main函数中的num变量没有影响,因为x只是num的一个副本。

指针传递(通过指针传递值)

在C语言中,虽然没有直接的"Pass by Reference"机制,但你可以使用指针来达到类似的效果。当你通过指针传递一个参数给函数时,你实际上传递的是这个参数在内存中的地址。函数内部可以通过这个地址来访问和修改原始数据。

例如:

#include <stdio.h>  
  
void modifyPointer(int *ptr) {  
    *ptr = 10; // 修改的是指针指向的原始数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿部春光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值