今天碰到了一维数组做函数参数的问题,那就扒一扒这个问题:
首先抛结论:
1:C语言中,当一维数组做函数参数时,编译器总是把它解析成一个指向其首元素的指针。
2:实际传递的数组大小与函数形参指定的数组大小没有关系。
然后举例说明:
下面是一个元素交换函数,把数组array【i】和array【j】交换位置。注意看数组是怎么传递给函数的。
正确的写法1:
解释说明:编译器把array解析成指向整形元素的指针,也就是数组的首地址,方括号中加不加指定数字都可以,因为编译器根本不看,因此最好不写,以免引起误解。
正确写法2:
解释说明:这样写就更直接明了了,参数是指向整形元素的指针,而数组的名字又是首元素的地址,也印证了数组名是指针常量。
可能会有一些同学对 函数中array[i] , array[j]不理解,实际上,array[i] = *(array+i),解释称首地址加偏移地址i,就是指向的第i个元素了。
array(i) = (array +i) //这是个指针,指向第i个元素。
array[i] = *(array+i) //这是数组的第i个元素。
注意()和[ ],别看错了。
完。
http://blog.youkuaiyun.com/tianjizheng/article/details/46314567
本文探讨了C语言中一维数组作为函数参数时的行为特点。总结了两个关键点:1. 编译器将一维数组解析为指向其首元素的指针;2. 实际数组大小与形参指定的大小无关。通过具体实例展示了两种正确的函数参数传递方式,并解释了数组下标访问的底层原理。
917

被折叠的 条评论
为什么被折叠?



