gpt4 book ai didi

c - array[-1] 是否给出数组中的最后一个元素?

转载 作者:太空狗 更新时间:2023-10-29 17:15:39 27 4
gpt4 key购买 nike

用 C 语言对我的 arduino 微 Controller 板进行编程时,我注意到一个奇怪的行为。

由于我的程序中存在逻辑错误, Controller 访问了整数数组的第 -1 个元素。

 int array[5];

array[4] = 27;
// array[-1] gives 27 now.

通过使用 -1 作为元素选择器获取数组的最后一个元素是否正确?

最佳答案

不,访问索引范围之外的元素是未定义的行为。在您的例子中,位于数组开头之前地址的元素设置为 27。

由于在 C 中访问数组元素只不过是进行“直接”指针运算,因此传递负索引是不允许的。您可以构造一个合法的用例,其中索引为负数和正数:

int raw[21], *data = &raw[10];
for (int i = -10 ; i <= 10 ; i++) {
data[i] = i;
}

关于c - array[-1] 是否给出数组中的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9861713/

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