本文共 666 字,大约阅读时间需要 2 分钟。
话不多说,先看代码!
#include#include int array(int arr[]) { int size = sizeof(arr) / sizeof(arr[0]); printf("size = %d\n", size);}int main() { int a[4] = { 1,2,3,4 }; array(a); system("pause"); return 0;}
简简单单的代码,判断一下数组长度,猜猜看?如果你觉的结果是4,那你就错了。结果如下
结果是 1,惊不惊喜。原因是,在 C 语言中,如果函数的参数是一个数组,那么这个数组会隐式的转换为指针,返回去,你在想想,一个数组的指针的大小是几个字节呢?int 型,4个字节,然后除以一个数组元素的大小,刚好结果是一。接下来,我改变一下代码。
#include#include int array(int arr[],int size) { int x = size; printf("size = %d\n", x);}int main() { int a[4] = { 1,2,3,4 }; array(a, sizeof(a) / sizeof(a[0])); system("pause"); return 0;}
我在函数的外边就计算了数组的长度,然后当作一个参数传进函数,这一次结果就对了!
所以说,把数组当作参数传进函数,数组会隐式的变为指针!
转载地址:http://tqwzi.baihongyu.com/