通常要找到数组的大小,我们会这样做..
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
如何使用此指针找到数组的大小。
答案 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));