在C语言中找到结构的大小
finding size of a structure in c language
数据的节点大小的结构是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 */
来自此文档(https://en.cppreference.com/w/c/language/struct(在结构的任意两个成员或最后一个成员之后,可能都有未命名的填充,但在第一个成员之前没有。结构的大小至少与其成员大小的总和一样大。
这是由于对齐要求。
|--|--|--|--|??|??|??|??|--|--|--|--|--|--|--|--|
int padding pointer
指针在平台上的8个倍数上对齐。
(https://en.wikipedia.org/wiki/Data_Structure_alignment(
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么像C++和Java这样的语言有一个内置的LinkedList数据结构
- 将C++容器与 C 语言结构混合使用
- 在C语言中找到结构的大小
- 为什么在未由语言本身定义的结构字节中的位字段顺序
- 自然语言中解析树的数据结构C/C
- 这是什么C++语言结构:#(即哈希)整数"path_to_header_or_cpp_file"<integer>?
- arm和x86体系结构中的c/c++语言有什么不同
- 将C++结构写入文件并使用另一种编程语言读取文件
- 位结构定义语言生成c++代码
- c语言中具有指针数组的结构体
- 如何在c语言中使用结构体
- 类中结构中的Const * char语言 - 分割错误
- C语言结构和指针的难点
- 解析c++的语法结构是否比其他语言更难?
- 语言律师-正在铸造具有公共基础和布局的非多态结构有效的C++
- 使用数组(带结构)作为全局函数,而不包含C++语言中的每个函数