Си записать значение по ссылке на ссылку?

Есть такой вот код:
int *i;
i=(int *)0x403040;
*i=(int)malloc(sizeof(int));

Кажется довольно бредово, но я точно знаю что в ячейке 0x403040 объявлена другая переменная которая является указателем на int и под неё не выделена память.
Соответственно я объявляю указатель i и присваиваю ему известный мне адрес, после чего выделяю память для размером int и записываю указатель на этот адрес в i. Проверяю работает как мне надо. Но вот я никак не пойму как теперь записать в выделенный участок памяти какое либо значение, точней я пришёл к вот такому коду:
int *i;
int *z;
i=(int *)0x403040;
z=(int *)malloc(sizeof(int));
*z=31337;
*i=(int)z;

Опять же протестировал всё работает именно так как мне надо, но как это записать не вводя z я не пойму.
PS. С Си я не очень знаком, поэтому на 90% я уверен что чего то не понимаю в синтаксисе, но вот чего не пойму.
  • Вопрос задан
  • 2535 просмотров
Решения вопроса 1
@onepavel
Консультация и разработка мобильных приложений
*((int*)(*i)) = 100500;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs
C++ developer
Мне показалось, вы пытаетесь изобрести указатель на указатель. Такие конструкции поддерживаются языком:
int *i = NULL; //указатель на ячейку типа int
int **pi = &i; //указатель на указатель на int

int *a = (int *)malloc(sizeof(int)); создаем саму ячейку
*a = 10; // записываем в нее значение

*pi = a;//теперь i и a указывают на число 10

free(a); //ячейка помечена как свободная. i и a ссылаются на "мусор"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы