为什么sizeof(a)16?(sizeof int为4) #包括 int main(){ int*a[2];//由两个int指针组成的数组 int(*b)[2]; //指向2 int数组的指针(在赋值之前无效)// int c[2]={1,2};//类似于b,但静态分配 printf(“int%ld\n的大小”,sizeof(int)); printf(“2(int*)a的数组大小=%ld\n”,sizeof(a)); printf(“ptr到2(int)b的数组的大小=%ld\n”,sizeof(b)); printf(“2(int)c的数组大小=%ld\n”,sizeof(c)); 返回0; }
为什么sizeof(a)16?(sizeof int为4) #包括 int main(){ int*a[2];//由两个int指针组成的数组 int(*b)[2]; //指向2 int数组的指针(在赋值之前无效)// int c[2]={1,2};//类似于b,但静态分配 printf(“int%ld\n的大小”,sizeof(int)); printf(“2(int*)a的数组大小=%ld\n”,sizeof(a)); printf(“ptr到2(int)b的数组的大小=%ld\n”,sizeof(b)); printf(“2(int)c的数组大小=%ld\n”,sizeof(c)); 返回0; },c,gcc,sizeof,C,Gcc,Sizeof,a是由2个整数指针组成的数组,因此大小不应该是2*4=8 在GCC上测试。在64位机器上,指针通常为8字节。因此,由两个指针组成的数组的大小通常为16字节 #include <stdio.h> int main() { int *a[2]; // an array of 2 int pointers int (*b)[2]; // pointer to an array of 2 int (invalid until assigned) // int
a
是由2个整数指针组成的数组,因此大小不应该是2*4=8
在GCC上测试。在64位机器上,指针通常为8字节。因此,由两个指针组成的数组的大小通常为16字节
#include <stdio.h>
int main() {
int *a[2]; // an array of 2 int pointers
int (*b)[2];
// pointer to an array of 2 int (invalid until assigned) //
int c[2] = {1, 2}; // like b, but statically allocated
printf("size of int %ld\n", sizeof(int));
printf("size of array of 2 (int *) a=%ld\n", sizeof(a));
printf("size of ptr to an array of 2 (int) b=%ld\n", sizeof(b));
printf("size of array of 2 (int) c=%ld\n", sizeof(c));
return 0;
}
在64位机器上,指针通常为8字节。因此,由两个指针组成的数组的大小通常为16字节
#include <stdio.h>
int main() {
int *a[2]; // an array of 2 int pointers
int (*b)[2];
// pointer to an array of 2 int (invalid until assigned) //
int c[2] = {1, 2}; // like b, but statically allocated
printf("size of int %ld\n", sizeof(int));
printf("size of array of 2 (int *) a=%ld\n", sizeof(a));
printf("size of ptr to an array of 2 (int) b=%ld\n", sizeof(b));
printf("size of array of 2 (int) c=%ld\n", sizeof(c));
return 0;
}
您可能正在64位计算机上编译,其中指针为8字节
int*a[2]
是由两个指针组成的数组。因此sizeof(a)
返回16。(因此它与
int
的大小无关)
如果您将其编译为32位,则大多数情况下会得到
sizeof(a)==8
。您可能是在指针为8字节的64位机器上编译的
int*a[2]
是由两个指针组成的数组。因此sizeof(a)
返回16。(因此它与
int
的大小无关)
如果您将其编译为32位,则通常会得到
sizeof(a)==8
。如果您在64位机器上运行,指针大小可能为8字节,因此2个指针=16字节。计算机上的sizeof(int*)是多少?如果在64位计算机上运行,指针大小可能是8字节,因此2个指针=16字节。您的计算机上的sizeof(int*)是多少?