我试图记住C编程的基础知识,关于结构的指针我正在做以下事情:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main()
{
struct MyStruct {
int number;
char *name;
};
int i;
struct MyStruct *p_struct = (struct MyStruct *) malloc (sizeof(struct MyStruct)*3);
printf("sizeof(struct MyStruct) = %d\n", sizeof(struct MyStruct));
for (i=0; i<3;i++)
{
(*p_struct).number = i;
(*p_struct).name = "string";
printf("(*p_struct).number = %d, (*p_struct).name = %s\n", (*p_struct).number (*p_struct).name);
++p_struct;
}
printf("sizeof(p_struct) = %d\n", sizeof(p_struct));
free (p_struct);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我得到8个字节作为结构的大小,由于编译器的对齐/填充,这可以是4 + 4 = 8个字节,但为什么我从4个字节sizeof(p_struct)?
我期待得到24(8字节x 3),为什么会这样?
如果这是正确的,我可以以某种方式获得24字节的总分配大小吗?
谢谢.