Man*_*ddy -5 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);`
Run Code Online (Sandbox Code Playgroud)
上面代码的输出显示大小为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);
Run Code Online (Sandbox Code Playgroud)
答案是2
如何使用此指针找到数组的大小.
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)
Run Code Online (Sandbox Code Playgroud)
结果取决于机器,但您可以验证这两个printfs 的输出是否相同:
printf( "sizeof(B)/sizeof(B[0]) = %zu\n", sizeof(B)/sizeof(B[0]) );
printf( "sizeof(int *)/sizeof(int) = %zu\n", sizeof(int *)/sizeof(int));
Run Code Online (Sandbox Code Playgroud)