c语言数组传递
转自:http://blog.csdn.net/xgmiao/article/details/9570825 点击打开链接 数组作为函数实参: C 语言中数组作为函数实参时,编译器总是将其解析为指向数组首元素地址的指针 ( 地址调用 ) 原因:我们知道 C 语言函数的调用有传值和传地址调用。假设 C 语言对数组采用传值调用 ( 对实参作一份拷贝,传递给被调用函数,函数不能修改实际实参值,而只能改变其拷贝 ) ,然后如果拷贝整个数组,则在时间和空间上开销都非常大。而对于函数,只要知道实参数组的首元素的地址,照样可以访问整个数组,所以采用传址调用效率更高。 注意的一点是对于函数来说,其接受的是数组首元素的地址,所以它是并不知道数组的大小的。 一维数组作函数实参: [cpp] view plain copy #include <stdio.h> void fun( char *p) { printf( "%d\n" , sizeof (p)); char c = p[3]; } void fun( char a[10]) { printf( "%d\n" , sizeof (a)); char c = a[3]; } void fun( char a[]) { printf( "%d\n" , sizeof (a)); char c = a[3]; } void main( int