You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言函数参数传递疑问:是否均为值传递及指针传参细节

C语言参数传递常见问题解答

问题1:能否认为在C语言中,传递给函数的所有参数或实参都会被复制?

必须可以啊!C语言从根儿上就只有按值传递这一种参数传递方式——不管你传的是普通的int、char,还是指针、结构体,实参的内容都会被完完整整地复制一份,作为函数的形参来用。函数里改形参的话,本质上都是在折腾这份副本,跟原来的实参半毛钱关系都没有(除非你用指针间接去改实参指向的内存,那是另一个逻辑了)。

问题2:修改change函数的注释是否合理?

当然没问题!你改后的注释可比原来的准确多了。

当你调用change(&value)的时候,&value这个指针的值(也就是value的内存地址)会被复制一份给到形参var。这时候var就是个独立的指针副本,但它和原来的&value指向同一块内存。所以注释写成:

// 此处var是与原指针指向同一内存块的指针副本。

完全戳中了要点,把C语言按值传递指针的本质说透了:指针本身是复制过来的,但副本和原指针指着同一个地方,所以对*var赋值,自然就改了那个地址里的内容——也就是原来的value变量的值嘛。

内容的提问来源于stack exchange,提问作者Jonathan Komar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:36:20