以下结构占用的内存字节数为
#include <stdio.h>
struct test
{
int k;
char* c;
};
答案 0 :(得分:3)
取决于机器架构及其内存对齐。通常,在32位计算机上,它将提供8
个字节
在64位机器上,它将提供16个字节。这是因为4
填充位将在int k;
之后添加。
尝试用
找出它printf("%zu\n", sizeof(struct test));
答案 1 :(得分:1)
调用main()
中的以下行,您将得到答案,具体取决于机器架构:
printf("%zu",sizeof(test));
答案 2 :(得分:1)
int
实际上是遗产,历史上与(任何*)的长度相同。在寄存器大小为64位的现代系统中,sizeof(int)= 32。但指针始终是处理器寄存器大小的大小。所以你在64位系统上有32位+ 64位,在8位系统上有2 * 8位。但结构的大小也取决于内存对齐。
找出这样一个结构有多长的方法是由C运算符sizeof
给出的。这里:sizeof(struct test)
。
要定义我们日期int
的长度,您应该使用#include <stdint.h>
中的类型。
答案 3 :(得分:0)
如前所述,您可以使用sizeof来检查它,但基本上是结构的大小,它是其组件的总和(在您的情况下是sizeof(int)+ sizeof(char *))。