指针的基本语法:*ptr= &a
此处&a
将返回变量a的内存地址,*ptr
将存储变量a
的值
我想问一下,是否可以让指针从给定的内存地址返回一个值?如果是的话语法
答案 0 :(得分:1)
是的,你可以通过直接用地址初始化指针来构造一个引用内存中某个任意地址的指针,而不是像&a
这样的表达式:
int* ptr = (int*)0x1234ABCD; // hex for convenience
std::cout << *ptr;
但要小心,因为您很少知道这样的内存地址。
由于(int*)
和int
之间不存在隐式转换,因此需要广告int*
。
答案 1 :(得分:0)
是。使用解除引用运算符*
。
例如;
int * a = new int;
int * b = new int;
*a = 5;
// Now a points to a memory location where the number 5 is stored.
b = a; //b now points to the same memory location.
cout << *b << endl; ///prints 5.
cout << a << " " << b << endl; //prints the same address.
int * c = new int;
c = *a;
// Now c points to another memory location than a, but the value is the same.
cout << *c << endl; ///prints 5.
cout << a << " " << c << endl; //prints different addresses.