sizeof(指针变量)/ sizeof(数组的第一个元素)的结果总是显示2

时间:2016-02-09 11:29:54

标签: c pointers sizeof

通常要找到数组的大小,我们会这样做..

int A[]={1,2,67,9,0,-1,-90};
int n=sizeof(A)/sizeof(A[0]);
printf("the size of the array is %d\n", n);`

上述代码的输出显示大小为7。 但是当A被放入某个指针然后,如果我们尝试这样做,它会显示

int A[]={1,2,67,9,0,-1,-90};
int *B=A;
int n=sizeof(B)/sizeof(B[0]);
printf("the size of the array is %d\n", n);

答案是2

如何使用此指针找到数组的大小。

1 个答案:

答案 0 :(得分:5)

  

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

结果为2,因为sizeof(B)sizeof( pointer )sizeof( array )

int A[]={1,2,67,9,0,-1,-90};
int *B=A;    // <-- B is a pointer pointing to the first element of array A
int n=sizeof(B)/sizeof(B[0]);    // <-- sizeof(pointer) / sizeof(int)

结果与机器有关,但您可以验证这两个printf的输出是否相同:

printf( "sizeof(B)/sizeof(B[0]) = %zu\n", sizeof(B)/sizeof(B[0]) );
printf( "sizeof(int *)/sizeof(int) = %zu\n", sizeof(int *)/sizeof(int));