c++中函数输入参数为数组时数组长度的计算

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_40692109/article/details/102766573

如果在函数中定义数组A,sizeof(A)是所有数组元素所占用的内存空间字节数,因此可以通过sizeof(A)/sizeof(A[0])计算数组大小,因为编译器在将 C 代码转换成汇编代码时,自动将其替换成了实际的数值。但是如果此数组在此函数为定义,然后作为函数的输入传入,则此时sizeof(A)则为只想A的指针的长度。sizeof(A)/sizeof(A[0])为1。所以在我们传入数组做参数时,通常同时会再多传一个参数记录数组的长度。

例如:

void arr(){

int a[] = { 6,-1,3,-4,-6,9,2,-2,5 };

int n = sizeof(a)/sizeof(a[0]);

cout << n << endl;

}

此时n为9,

 

int a[] = { 6,-1,3,-4,-6,9,2,-2,5 }

int arr(int a[]) {

int n = sizeof(a)/sizeof(a[0]);

cout << n << endl;

}

此时n为1

 

猜你喜欢

转载自blog.csdn.net/qq_40692109/article/details/102766573