天天看点

c++数组长度函数length_C语言数组传入函数获取数组长度的方法

在写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           

继续阅读