Как я могу обновить адрес, который обозначает переменная? - PullRequest
0 голосов
/ 24 марта 2019
int a = 1 ;
int*p = &a;
(*p) = 2;

, если & a равно 6422312, и я хочу обновить значение в 6422312 до 2 (int), но при этом оставить значение int a = 1

Поэтому я хочу, чтобы & a стало 6422316и присвойте значение 1, то есть я хочу использовать то же имя «а», что и позже 1, независимо от того, находится оно в 64222312 или нет.

//how can I do this
&a => 6422316  
*(&a) <- 1;

Я знаю, что могу легко сделать это, если обработаю «a"как указатель, но я хочу знать, могу ли я использовать переменную для того же.

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

Единственное, что вы можете сделать, что-то похожее на ваше описание - это арифметика указателей. Допустим, у вас есть указатель p, и вы хотите изменить значение, которое лежит sizeof *p байт после p на 42, а затем использовать *(p+1) = 42.

0 голосов
/ 24 марта 2019

У вас нет никакого контроля над адресом переменной в C (кроме пользовательских расширений компилятора).Это означает, что вы не можете выбрать его адрес.Компилятор делает это.Более того, переменная в C не изменяет свой адрес в течение своего времени жизни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...