170 похожих чатов

Ребята привет - помогите понять что я тут делаю не

так? 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();
}

21 ответов

19 просмотров

*(pArray + sizeof(int) 1) = 66;

учебник, по языку , С

в общем array[0] = 55; array[1] = 66; с точность до того, что array[x] это *(array+x)

SET-TES Автор вопроса
Denis P
учебник, по языку , С

Вот я его и читаю

*(pArray + sizeof (int)) = 66; //вихід за межі масиву *(pArray + 1) = 66; //виписування значення в array[1]

SET TES
Вот я его и читаю

и там это написано?

SET-TES Автор вопроса
SET TES
ну не так

этот код написано как пример того как писать не надо

SET-TES Автор вопроса
SET TES
а как в тогда в array[0] записать 55

Ох, тут вам потрібно почитати про масиви й вказівники

Також у вас є проблема в цій строчці коду: pArray = &array; Якщо ви пишите код на чистому С, а не С++

SET TES
я пишу на си

Ось, тому вам потрібно ще раз перечитати главу по вказівникам та спробувати спочатку написати програму з використанням звичайного масиву, а не динамічного

Объясните, что здесь изменилось #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; }

SET-TES Автор вопроса
Aliaksandr Onishchuk
Объясните, что здесь изменилось #include <stdlib.h...

тут я вижу что мы инициализировали pArray после проверки

SET-TES Автор вопроса
Aliaksandr Onishchuk
Хорошо

*pArray = 55 и потом делаем инкремент

SET TES
*pArray = 55 и потом делаем инкремент

Хорошо Почему не *(pArray+sizeof(int)) = 66; а ++pArray; *pArray = 66;

SET-TES Автор вопроса
Aliaksandr Onishchuk
Хорошо Почему не *(pArray+sizeof(int)) = 66; а ++...

то есть получается я сначала увеличивал адрес pArray на 4-ре байта и в тот мусор присваивал 66

SET TES
то есть получается я сначала увеличивал адрес pArr...

ещё раз, может пойти почитать главу учебника про указатели и их арифметику?

SET-TES Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта