так? void fileWrite(){
int* array = NULL;
int* pArray;
array = malloc(sizeof(int) * 2 );
pArray = &array;
*pArray = 55;
*(pArray+sizeof(int)) = 66;
printf(" %d, %d ", array[0], array[1]);
getchar();
}
*(pArray + sizeof(int) 1) = 66;
учебник, по языку , С
в общем array[0] = 55; array[1] = 66; с точность до того, что array[x] это *(array+x)
Вот я его и читаю
*(pArray + sizeof (int)) = 66; //вихід за межі масиву *(pArray + 1) = 66; //виписування значення в array[1]
и там это написано?
ну не так
этот код написано как пример того как писать не надо
а как в тогда в array[0] записать 55
Ох, тут вам потрібно почитати про масиви й вказівники
Також у вас є проблема в цій строчці коду: pArray = &array; Якщо ви пишите код на чистому С, а не С++
Ось, тому вам потрібно ще раз перечитати главу по вказівникам та спробувати спочатку написати програму з використанням звичайного масиву, а не динамічного
Объясните, что здесь изменилось #include <stdlib.h> #include <stdio.h> void fileWrite(){ int* array = NULL; array = malloc(sizeof(int) * 2 ); if (array == NULL) return; int* pArray = array; *pArray = 55; ++pArray; *pArray = 66; printf(" %d, %d ", array[0], array[1]); free(array); pArray = NULL; } int main() { fileWrite(); return 0; }
тут я вижу что мы инициализировали pArray после проверки
*pArray = 55 и потом делаем инкремент
Хорошо Почему не *(pArray+sizeof(int)) = 66; а ++pArray; *pArray = 66;
то есть получается я сначала увеличивал адрес pArray на 4-ре байта и в тот мусор присваивал 66
ещё раз, может пойти почитать главу учебника про указатели и их арифметику?
все все пошел читать 😉
Обсуждают сегодня