我想找到作为函数参数传递的整数数组的大小.这是我的代码
void getArraySize(int arr[]){
int len = (sizeof(arr)/sizeof(arr[0])
printf("Array Length:%d\n",len);
}
int main(){
int array[] = {1,2,3,4,5};
getArraySize(array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下警告
sizeof on array function parameter will return
size of 'int *' instead of 'int []' [-Wsizeof-array-argument]
请帮忙,以便我可以在里面找到整数数组的长度function
getArraySize
但是我能够找到函数array
内部的大小.因为main
它是作为一个传递的pointer
,所以无法在中找到length
from function
.
我确实有一个想法.我可以把它放在一个try/catch
块(C
没有尝试捕获,只有操作系统依赖的跳线)和循环,直到我得到一个segmentation fault
.
有没有其他方法可以用来找到integer array
内部的长度function
我尝试在Chrome Developer Console中执行代码,我得到了这个奇怪的结果,我无法理解
var arr = [[2,2]];console.log('Array is',arr);arr[0] = [3,3]
Run Code Online (Sandbox Code Playgroud)
执行此操作后得到的输出是
Array is [[3,3]]
任务应该在console.log
执行完毕后发生.但它在那之前神奇地发生了.
为了澄清我尝试在JsBin中运行相同的代码.但是在JSBin中,我得到了预期的结果
Array is [[2,2]]
但是,此代码会产生预期的chrome结果
var arr = [2,2];console.log('Array is',arr);arr[0] = 3;console.log(arr)
产量
Array is [2,2] [3,2]
有人可以帮助我理解这一点.