Указатель на [-1] -й индекс массива - PullRequest
11 голосов
/ 02 марта 2010

Как указатель указывает на [-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, а именно: массив [1], массив [2], ...

Ответы [ 12 ]

0 голосов
/ 02 марта 2010

Вы просто указываете на 4 байта, расположенных перед массивом.

0 голосов
/ 02 марта 2010

array указывает на одно местоположение перед начальным адресом realarray. Однако, что смутило меня, почему это скомпилировано без каких-либо предупреждений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...