Lor*_*bot 2 c struct declaration sizeof
我很难理解当我在结构中声明数组时会发生什么。谈论普通数组(int、float、char...类型)我知道数组的名称本身就是指向数组第一个元素的指针。但是,假设我有一个这样的结构:
struct student
{
char name[12];
int age;
}
Run Code Online (Sandbox Code Playgroud)
在main函数中假设我声明:struct student s1;
嗯,我不明白这个变量是如何在内存中分配的。年龄有 4 个字节,字符串有 10 个字节,但是 name 指针s1.name(它是指向字符串第一个元素的指针,对吗?)呢,它是否也在新结构中分配?
数组不是指针,它们的“名称”也不是指针,无论这意味着什么。
在大多数情况下,它们会隐式转换为指针,但生成的指针是动态计算的,并且在转换之前通常不存在于内存中。
数组(任何元素类型)在内存中存储为 N 个连续元素,仅此而已。
所以,char name[12]占用12个字节(存放12个字符)。int age在大多数现代平台上占用 4 个字节。
因此struct Student占用16字节。struct Student大小的数组N占用字节sizeof(struct Student) * N。