博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言中函数参数传递的本质是值传递
阅读量:4560 次
发布时间:2019-06-08

本文共 559 字,大约阅读时间需要 1 分钟。

数组名做函数参数进行传递时,实际上是是一份该指针的拷贝。

给形参赋予其他值,并不影响实参的值。

类似于:

int *p = a;    //a为数组名

p = b;          //b为数组名

当然,如果你传递了一个指向某个变量的指针,而函数对该指针执行了间接访问操作,那么函数就可以改变那个变量,但参数还是传值方式传递的,这是两个概念,不矛盾。

对于字符串复制函数strcpy:

void strcpy(char *buffer, char const *string){    while((*buffer++ = *string++) != '\0')            ;}

 

把第2个参数中的字符串复制到第1个参数所指向的缓冲区。调用程序的缓冲区将被修改,因为函数对参数进行了间接访问操作。但是,无论函数对参数(指针)如何修改,都不会修改调用程序的指针实参本身(但可能修改他所指向的内容)。

注意while语句中的 *string++表达式。他取得string所指向的那个字符,并且产生一个副作用,就是修改string,使它指向下一个字符。用这种方式修改形参并不会影响调用程序的实参,因为只有传递给函数的那份拷贝进行了修改。

转载于:https://www.cnblogs.com/Lunais/p/7231225.html

你可能感兴趣的文章
nginx http proxy 正向代理
查看>>
对BFC的总结
查看>>
第十四周Java学习总结
查看>>
税率等级
查看>>
__alloc_pages
查看>>
web service 使用多态(转载)
查看>>
23醒
查看>>
Google Hack的一些整理
查看>>
[贪心] JZOJ P3757 随机生成器
查看>>
Codeforces Round #370 (Div. 2)(简单逻辑,比较水)
查看>>
ppt转换为html格式 抄的别人的 但是改成了web版 比较简陋
查看>>
操作系统进程调度算法
查看>>
less与sass的区别点
查看>>
event.keycode值大全
查看>>
array and ram
查看>>
工作笔记——禁用浏览器的返回按钮
查看>>
免费获得盛大网盘EverBox125G容量方法
查看>>
如何用spidermonkey在python里调用javascript代码
查看>>
2016级算法第一次练习赛-A.群鸦的盛宴
查看>>
浅谈深度学习和本体间的关系
查看>>