一个困扰我的简单问题。假设我在main中定义了一个数组,比如int arr[5]
。现在,如果我仍然在main中,并且我设置了int i = sizeof(arr)/sizeof(arr[0])
,那么我被设置为5,但是如果我将数组作为函数参数传递,并在这个函数中进行完全相同的计算,我会得到一个不同的数字。为什么会这样呢?起初我认为这是因为在函数中arr
是一个指针,但据我所知arr
也是主函数中的一个指针!
此外,如果我做一些非常类似的事情,只是动态初始化数组,我会得到奇怪的结果:
int *arr = (int*) malloc(sizeof(int) * 5);
int length = sizeof(*arr) / sizeof(arr[0]);
printf("%d\n",length);
这里的输出是1
。你知道为什么吗?提前感谢!
https://stackoverflow.com/questions/7545428
复制相似问题