小编c_b*_*c_b的帖子

指向结构的指针的大小

我试图记住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字节的总分配大小吗?

谢谢.

c pointers structure

5
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

pointers ×1

structure ×1