C++ 用c语言求结构的大小
在节点结构中,数据的大小为4字节,节点*的大小为8字节,而节点的大小为16字节。4+8=12之后,节点的4个额外字节在哪里 我对此一无所知C++ 用c语言求结构的大小,c++,c,C++,C,在节点结构中,数据的大小为4字节,节点*的大小为8字节,而节点的大小为16字节。4+8=12之后,节点的4个额外字节在哪里 我对此一无所知 struct node { int data; struct node* next; }s; int main() { printf("node => %d \n",sizeof(s)); printf("node.data => %d \n",sizeof(s.data)); printf("nod
struct node
{
int data;
struct node* next;
}s;
int main()
{
printf("node => %d \n",sizeof(s));
printf("node.data => %d \n",sizeof(s.data));
printf("node* => %d ",sizeof(s.next));
return 0;
}
/*OUTPUT-
node => 16
node.data => 4
node* => 8 */
根据本文件
()
结构的任意两个成员之间或最后一个成员之后,但第一个成员之前,可能有未命名的填充。结构的大小至少与其成员大小之和相同
这是由于对齐要求造成的
|--|--|--|--|??|??|??|??|--|--|--|--|--|--|--|--|
int padding pointer
指针在平台上以8的倍数对齐。()你看到的是一个维基百科文章的实际例子,如果你在C中寻找一个解决方案,为什么这个标签是C++和C++?请仅使用相关标记。请查阅“结构填充”以了解为什么结构的大小可以大于其成员的大小之和。此外,使用
%d
打印sizeof
运算符的结果会给出未定义的行为,因为%d
指定了int
,而sizeof
不会给出类型为int
的结果。