Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么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 - Fatal编程技术网

为什么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*)是多少?