C语言中用数组名作为参数能改变实参数组的值的理解
2013-05-25 23:35
183 查看
很多初学者不理解为什么C语言中用数组名作为参数能改变实参数组的值,现在来谈谈我的理解:
把实参数组传递给函数,则形参从数组哪里得到了其实地址,因此数组与实参数组共占了同一段内存单元,在函数调用期间,该变了形参数组的值,也就改变了实参数组的值。
现在问题来了,怎么理解共占同一段内存单元和值改变造成的影响 呢?
举例:
int i = 12;
int *p = & i; //此时*p与i共占同一段内存单元,
*p = 23; //此时改变了*p的值,i的值也就跟着改变了。此时 i = 23;
上述例子中,可以理解为*p表示形参数组,i表示实参,它们共占同一段内存单元 ,所以改变形参能改变实参的值。
把实参数组传递给函数,则形参从数组哪里得到了其实地址,因此数组与实参数组共占了同一段内存单元,在函数调用期间,该变了形参数组的值,也就改变了实参数组的值。
现在问题来了,怎么理解共占同一段内存单元和值改变造成的影响 呢?
举例:
int i = 12;
int *p = & i; //此时*p与i共占同一段内存单元,
*p = 23; //此时改变了*p的值,i的值也就跟着改变了。此时 i = 23;
上述例子中,可以理解为*p表示形参数组,i表示实参,它们共占同一段内存单元 ,所以改变形参能改变实参的值。
相关文章推荐
- 如果改变了形参数组的值 从而在调用函数期间 形参数组就和实参数组共占同一段内存单元 为什么形参数组从实参数组那里得到起始地址后 请问各位C语言高手:当用数组名作函数参数时 也就该变了实参数组的值
- c语言初学-关于指针作为参数并改变它的值的问题
- C语言中,数组名作为参数传递给函数时,退化为指针
- 指针变量作为函数参数为了改变指针变量指向实参的值
- 如何理解数组作为函数参数时,数组名就是指针?
- C语言 数组名作为参数传递 数组名发生退化成指针
- C语言数组名作为函数参数
- 理解数组和引用作为参数和返回值传递
- 如何理解数组作为函数参数时,数组名就是指针?
- C语言提高-第24/25讲: 数组名【指针】作为函数参数(成绩处理函数版)
- 【C语言】将数组作为函数的参数
- C语言中数组作为函数的参数以及返回值的使用简单入门
- C语言中数组名作为参数进行函数传递
- 《IOS_作业C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)
- C语言数组作为函数参数
- 第6周 C语言及程序设计提高例程-24 数组名作为函数参数
- C语言提高-第23/24/25讲: 指针的运算/数组名作为函数参数/指针作函数参数(一维数组Vs指针)
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- C语言中数组作为函数参数的问题
- C语言中,数组名作为参数传递给函数时,退化为指针