如何更新变量代表的地址?

时间:2019-03-24 10:19:15

标签: c pointers

int a = 1 ;
int*p = &a;
(*p) = 2;

如果&a是6422312,并且我想将6422312中的值更新为2(int),但仍保持int a = 1的值

因此,我想让&a变为6422316并分配值1,即以后无论是否在64222312中,我都想使用与1相同的名称。

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

我知道如果将“ a”当作指针,我可以轻松地做到这一点,但是我想知道是否可以使用该变量来做同样的事情。

2 个答案:

答案 0 :(得分:0)

您无法控制C中变量的地址(自定义编译器扩展除外)。这意味着您无法选择其地址。编译器会这样做。此外,C中的变量在其生存期内不会更改其地址。

答案 1 :(得分:0)

您只能做的一点与描述类似的是指针算术。因此,假设您有一个指针p,并且想要将sizeof *p之后p个字节的值更改为42,然后使用*(p+1) = 42