在写C语言函数时,我们总想去把数组传入函数中( 例如:int function(int a[]) ),并得到其长度,事实上,本人经过多方面努力验证,发现在函数内获取其长度做不到的,当我们传入一个数组时,根据C语言规定,实际传入的形参是我们传入数组的指针。
举个例子,如果主函数中有一个数组b[10],我们实际传入到函数function里的是
int *a = b; 也就是说,我们传入到函数中的a是数组b的
首地址。当我们使用sizeof(a)时,得到的也只是指针的大小,而并非数组的大小。不同于字符串以0结尾,数字数组的末端通过指针是无法找到的。
然而在主函数中,数组的长度是可以获取的,使用
int length = sizeof(b)/sizeof(b[0]);
获取其长度,在函数中加入新的形参int NumSize输入length作为其长度:
int function(int a[], int NumSize)
这样便可以将数组长度输入到函数中去了。
函数中指针实例:
#include
输出结果为:
size of array b[] is 2
(电脑系统64位,指针长度为8)
由此可见无法获取
正确的获取方式:
#include
结果:
size of array b[] is 12