gpt4 book ai didi

c - 当我在 C 语言的结构中声明一个数组时会发生什么?

转载 作者:行者123 更新时间:2023-12-02 16:01:38 25 4
gpt4 key购买 nike

我很难理解在结构中声明数组时会发生什么。谈到普通数组(int、float、char...类型)我知道数组的名称本身就是指向数组第一个元素的指针。但是,假设我有一个这样的结构:

struct student
{
char name[12];
int age;
}

main 函数中,假设我声明:struct student s1;好吧,我不明白这个变量是如何在内存中分配的。年龄有 4 个字节,字符串有 10 个字节,但是名为 s1.name 的指针(它是指向字符串第一个元素的指针,对吗?)呢?是否也在新结构中分配?

最佳答案

数组不是指针,也不是它们的“名称”,不管是什么意思。

在大多数情况下,它们被隐式转换为指针,但生成的指针是动态计算的,并且在转换之前通常不存在于内存中。

数组(任何元素类型)作为 N 个连续元素存储在内存中,除此之外别无其他。

因此,char name[12] 占用 12 个字节(存储 12 个字符)。 int age 在大多数现代平台上占用 4 个字节。

因此struct Student占用16个字节。大小为 Nstruct Student 数组占用 sizeof(struct Student) * N 字节。

关于c - 当我在 C 语言的结构中声明一个数组时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70524130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com