gpt4 book ai didi

c - AVR C - const 限定符在查找表声明中的行为如何?

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:44 25 4
gpt4 key购买 nike

我在论坛中找到了以下代码,我想知道 const 限定符在其中的行为如何?

const uint8_t data[] = { 15, 3, 41, 76, 2, 9, 5 };

val = data[5];

现在,据我所知,const 限定符使变量 data[] 成为只读的,因此,在这个例子中,数组的内容不能修改的。令我感到困惑的是,限定符被应用于一个数组,它是一个指针,因此可以修改数组的内容,但不能修改指针本身。

我说得对吗?还是数组的内容是只读的?

最佳答案

an array, which is a pointer

不,。数组不是指针。指针是一个地址(在当前桌面系统上通常为 4 或 8 个字节)。数组是内存中一系列连续的对象,一个接一个。

在大多数表达式中,数组退化 为指针:当您使用数组名称时,它会隐式转换为指向其第一个元素的指针。但这只是一个转换,就像在初始化 double 类型的变量时,1 转换为 1.0 一样。

综上所述,答案很明确:data 是一个包含 7 个const uint8_t 类型对象的数组,这意味着它的内容不能被修改。在表达式中,data 将隐式转换为类型 const uint8_t *(指向常量 8 位无符号整数的指针)。

关于c - AVR C - const 限定符在查找表声明中的行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130142/

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