Почему адреса элементов массива находятся в памяти не по порядку - C (СИ)
Формулировка задачи:
Приветствую! Подскажите пожалуйста почему адреса элементов массива находятся в памяти не по порядку? почему и где происходит изменение адресов после выполнения функции sorting()?
#define SIZE 10 void sorting(int *massiv, int *general, int *generalPtr) { printf("%d %d\n", massiv[0], massiv[7]); int z = 0; for (int x = 0; x < SIZE; x++) if ((*general > massiv[x]) && (massiv[x] > *generalPtr)) { *generalPtr = massiv[x]; generalPtr = &massiv[x]; } for (int c = 0; c < SIZE; c++) { printf("massiv[%d] %p\n",c,massiv[c]); } printf("%p\n", *generalPtr); z = *general; *general = *generalPtr; *generalPtr = z; } int main(void) { int massiv[10] = { 37,2,6,4,89,8,10,12,68,45 }; int *general = massiv; int general_ret = 0; int *generalPtr = &general_ret; for (int c = 0; c < SIZE; c++) { printf("massiv[%d] %p\n", c, massiv[c]); } sorting(massiv,general, generalPtr); getch(); }
Решение задачи: «Почему адреса элементов массива находятся в памяти не по порядку»
textual
Листинг программы
printf("massiv[%d] %p\n", c, &massiv[c]);
Объяснение кода листинга программы
В данном коде на языке C происходит следующее:
massiv
- это название массива, который содержит некоторое количество элементов.c
- это переменная, которая используется для индексации элементов массиваmassiv
.printf
- это функция вывода информации на экран.massiv[c]
- это выражение, которое обращается к элементу массиваmassiv
с индексомc
.&massiv[c]
- это выражение, которое получает адрес элемента массиваmassiv
с индексомc
.printf(
massiv[%d] %p\n, c, &massiv[c]);
- это вызов функцииprintf
, которая выводит на экран сообщение следующего вида:massiv[c] address of massiv[c]
. Таким образом, данный код выводит на экран информацию о том, какие элементы массиваmassiv
хранятся по каким адресам в памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д