Max*_*kyi 1 c c++ memory pointers
我正在阅读关于指针的这一章,它说明如下:
变量的地址可以通过在带有&符号(&)的变量名称前面来获得,称为address-of运算符.例如:
int myvar = 23...;
foo = &myvar;
Run Code Online (Sandbox Code Playgroud)
我的理解是正确的,它是一个对象的地址new MyStruct(),而不是变量本身?我还不太清楚如何存储变量(不是它们引用的对象),并且在编译程序时很可能根本不使用它们.
没有对象23...,这是一个价值.有一个名为"对象" myvar,它有一个地址.如果为变量赋值,则该地址不会改变,它是变量本身的属性.
int var = 23;
int *foo = &var;
var = 35; // foo isn't changed here, it holds the same address.
*foo = 42; // again, foo itself isn't modified
assert(var == 42); // But we modified var through the address in foo
Run Code Online (Sandbox Code Playgroud)
作为旁注,因为你也标记了这个C++.我只想提一下,整个组合中都有一定的复杂性,因为C++允许你&为自己的类重载运算符(其中).但对于原始变量,使用&将始终产生所述变量的地址.