Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.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
C++ 用c语言求结构的大小_C++_C - Fatal编程技术网

C++ 用c语言求结构的大小

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

在节点结构中,数据的大小为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("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
的结果。