c语言一维数组做参数传递给函数:
2017-02-15 17:04
459 查看
今天碰到了一维数组做函数参数的问题,那就扒一扒这个问题:
首先抛结论:
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个元素。
注意()和[ ],别看错了。
完。
首先抛结论:
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个元素。
注意()和[ ],别看错了。
完。
相关文章推荐
- c语言一维数组做参数传递给函数:
- c语言一维数组做参数传递给函数:
- 转载:c语言一维数组做参数传递给函数:
- C语言中,数组名作为参数传递给函数时,退化为指针
- 一维数组和二位数组作为函数参数进行传递的方式
- (转载) C语言技巧:怎样把数组作为参数传递给函数?(值传递和指针传递)
- C语言中多维数组的常见动态分配方式及其在函数参数传递时的应用
- C语言中,数组名作为参数传递给函数时,退化为指针
- 【c基础】c语言 变量 数组元素 数组名做函数参数传递
- 黑马程序员---------C语言 关于数组被当作函数参数传递的问题
- C语言中,数组名作为参数传递给函数时,退化为指针
- 一维数组的函数参数传递
- C语言中,数组名作为参数传递给函数时,退化为指针
- c语言之函数参数传递之数组篇
- C语言技巧:怎样把数组作为参数传递给函数?
- C语言中如何将数组作为函数参数传递
- C语言中数组名作为参数进行函数传递
- 关于C语言中函数调用和参数传递机制的探讨(三 .传递多个参数等)
- 关于C语言中函数调用和参数传递机制的探讨
- 转载-关于C语言中函数调用和参数传递机制的探讨