如何使用ptr获得28。sizeof(arr)给我28。(数组元素的长度)* sizeof(int)但是我不知道如何使用ptr获得此值。我想要这个东西,所以我可以使用这种方法获得数组长度。在这里拥有功能。
int main (void)
{
int arr[7] = {5, 8, 10, 50, 55, 98, 354};
int result;
/* ------- From here ---------*/
int size = sizeof(arr) / sizeof(int); // sizeof(arr) = 28, sizeof(int) = 4. So size = 28/4 = 7
result = anyFunction (arr);
return 0;
}
int anyFunction (int array[])
{
int arraySize = sizeof(array) / sizeof(int); // this line
}
int *ptr = arr;
//与* ptr =&arr [0]相同
size = sizeof(ptr);
// 8是指针的大小。
size = sizeof(*ptr);
// size =4。4是arr [0]的大小。因为它指向arr [0]。所以它的sizeof(arr [0])或sizeof(5)
sizeof(array)
定义为array
时使用int array[]
,由于数组的大小未知,我希望它与int *array
定义的相同。显而易见的解决方案是在数组大小的anyFunction()
中添加第二个参数。