【发布时间】:2010-03-02 09:07:27
【问题描述】:
指向数组第[-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],.. .
【问题讨论】:
-
如果我遇到使用以 1 开头的数组的 C 代码库,我不确定我会如何反应,但有可能:
int array[10]; int *arrayOne = array - 1;