Почему некоторые элементы массива, находящиеся за пределами границ, в C ведут себя иначе, чем другие? [дубликат]Linux

Ответить
Anonymous
 Почему некоторые элементы массива, находящиеся за пределами границ, в C ведут себя иначе, чем другие? [дубликат]

Сообщение Anonymous »

При попытке распечатать адреса и значения элемента массива, который не покрыт индексом массива, почему некоторые элементы возвращают:
  • (nil) указатель
  • Адрес других элементов массива
  • Случайные адреса (я предполагаю, что это адреса физической памяти)
Моя программа:

Код: Выделить всё

#include 

int main(){
int arr[5];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;
printf("%d\t-\t%p\n", arr[0], arr[0]);
printf("%d\t-\t%p\n", arr[1], arr[1]);
printf("%d\t-\t%p\n", arr[2], arr[2]);
printf("%d\t-\t%p\n", arr[3], arr[3]);
printf("%d\t-\t%p\n", arr[4], arr[4]);
printf("%d\t-\t%p\n", arr[5], arr[5]);
printf("%d\t-\t%p\n", arr[6], arr[6]);
printf("%d\t-\t%p\n", arr[7], arr[7]);
printf("%d\t-\t%p\n", arr[8], arr[8]);
printf("%d\t-\t%p\n", arr[9], arr[9]);
printf("%d\t-\t%p\n", arr[10], arr[10]);
printf("%d\t-\t%p\n", arr[11], arr[11]);
}
Мой результат:

Код: Выделить всё

1   -   0x1
2   -   0x2
3   -   0x3
4   -   0x4
5   -   0x5
0   -   (nil)           // (nil is printed here)
1367157456  -   0x517d2ad0  // (random address and value)
32628   -   0x7f74          // (random address and value, which should have been adjacent, I think)
1   -   0x1         // (address and value of other element in array)
0   -   (nil)           // (here too, nil is printed)
1365029450  -   0x515cb24a
32628   -   0x7f74

[*]Скомпилировано с помощью gcc [gcc ./temp.c]
[*]x86 64-разрядная машина Linux.


Подробнее здесь: https://stackoverflow.com/questions/792 ... thers-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»