我如何使用sizeof(pointer)。所以我得到sizeof(array)。指针指向数组[duplicate]

问题描述 投票:0回答:1
请参见代码中的注释部分。在那里,我解释了我想了解的内容和我知道的内容。“在此处输入图像描述”

如何使用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)

c pointers
1个回答
0
投票
如果将sizeof(array)定义为array时使用int array[],由于数组的大小未知,我希望它与int *array定义的相同。

显而易见的解决方案是在数组大小的anyFunction()中添加第二个参数。

© www.soinside.com 2019 - 2024. All rights reserved.