求理解reference的本质和pointer的区别的一到迷你小题,该如何解决
求理解reference的本质和pointer的区别的一到迷你小题
sent to cout的这三个内存地址是一样的吗?请高手分别详细解释一下,Thank you!
------解决方案--------------------
当然一样
int &b = a;则b相当于是a的一个别名,地址是一样的,比如一个人叫李波,那么波波也是他。
由上可知*c = &b 等价于*c = &a;
c 记录a(b)的地址,那么*c 就是a了,然后你就知道了
------解决方案--------------------
引用和指针的区别:
1)引用是变量的别名,指针实质是一个变量,但存放的是变量的地址;
2)引用在定义的时候必须赋初值,并且在生存周期内不能再改变;指针的值可以改变;
3)引用的值不可以赋值为0或者NULL,但是指针可以赋值为NULL
针对楼主的题:
变量 a 分配了一个空间,引用 b 是这个空间的别名,就相当于同一个人有两个名字,所代表的内存空间还是一个。int* c = &b 等价于 int* c = &a ,定义了一个指针,指向的是 a(b)这个内存空间。所以上面三者是一样的
- C/C++ code
#include <iostream> using namespace std int main() { int a = 10; int& b = a; int* c = &b; cout << &a << endl; cout << &b << endl; cout << &(*c) << endl; return 0; }
sent to cout的这三个内存地址是一样的吗?请高手分别详细解释一下,Thank you!
------解决方案--------------------
当然一样
int &b = a;则b相当于是a的一个别名,地址是一样的,比如一个人叫李波,那么波波也是他。
由上可知*c = &b 等价于*c = &a;
c 记录a(b)的地址,那么*c 就是a了,然后你就知道了
------解决方案--------------------
引用和指针的区别:
1)引用是变量的别名,指针实质是一个变量,但存放的是变量的地址;
2)引用在定义的时候必须赋初值,并且在生存周期内不能再改变;指针的值可以改变;
3)引用的值不可以赋值为0或者NULL,但是指针可以赋值为NULL
针对楼主的题:
变量 a 分配了一个空间,引用 b 是这个空间的别名,就相当于同一个人有两个名字,所代表的内存空间还是一个。int* c = &b 等价于 int* c = &a ,定义了一个指针,指向的是 a(b)这个内存空间。所以上面三者是一样的