gpt4 book ai didi

c++ - 指向数组第 [-1] 个索引的指针

转载 作者:可可西里 更新时间:2023-11-01 14:52:26 24 4
gpt4 key购买 nike

指向数组第 [-1] 个索引的指针如何每次都产生合法输出。指针赋值中实际发生了什么?

#include<stdio.h>
int main()
{
int realarray[10];
int *array = &realarray[-1];

printf("%p\n", (void *)array);
return 0;
}

代码输出:

manav@workstation:~/knr$ gcc -Wall -pedantic ptr.c
manav@workstation:~/knr$ ./a.out
0xbf841140

编辑: 如果这种情况有效,那么我可以使用它来定义一个索引从 1 而不是 0 开始的数组,即:array[1]、array[2]、.. .

最佳答案

您只是得到一个指针,其中包含该“虚构”位置的地址,即第一个元素 &realarray[0] 的位置减去一个元素的大小。

这是 undefined behavior ,并且可能会严重崩溃,例如,如果您的机器具有分段内存架构。它之所以有效,是因为编译器作者选择了实现上述算法;这可能随时改变,另一个编译器的行为可能完全不同。

关于c++ - 指向数组第 [-1] 个索引的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361927/

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