У меня есть код ниже, пытаясь понять выделение памяти под C. Замечания рядом с строкой указывают результат, который я получил. Тем не менее, я не знаю, как это сделать. Является ли этот стандарт? Если да, то как это подходит к этим возвращениям?Как C sizeof() возвращает эти значения
char *pk[] = {"12", "34", "56"};
int w[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*ppw)[2][3] = &w;
char ch = "a";
int in = 10;
int i = sizeof(ch);
printf("SIZE OF CHAR IS %d\n",i); //1
i = sizeof(in);
printf("SIZE OF INT IS %d\n\n",i); //4
int n = sizeof(pk);
printf("%d\n",n); //24
n = sizeof(*pk);
printf("%d\n",n); //8
n = sizeof(**pk);
printf("%d\n",n); //1
n = sizeof(ppw);
printf("%d\n",n); //8
n = sizeof(*ppw);
printf("%d\n",n); //24
n = sizeof(**ppw);
printf("%d\n",n); //12
идти читать википедию первого – user3528438
и 'символ CH = «a»; 'не делает то, что вы хотите сделать – user3528438
Все эти размеры кажутся мне правильными, вы должны исправить эту строку:' char ch = "a"; 'должен читать' char ch = 'a'; ' – chqrlie