引用和指针的区别
答案:2 悬赏:40
解决时间 2021-04-06 22:39
- 提问者网友:霸气大叔
- 2021-04-06 10:16
引用和指针的区别
最佳答案
- 二级知识专家网友:情战凌云蔡小葵
- 2021-04-06 10:21
从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。引用访问一个变量是直接访问,而指针是间接访问。
2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域
3.从编译上看:程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改
2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域
3.从编译上看:程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改
全部回答
- 1楼网友:留下所有热言
- 2021-04-06 11:33
指针和引用的区别:
引用必须指向一个对象,如果用一个对象给一个引用赋值,那么改变的是引用指向的对象而不是引用本身。
int *pi = 0;//pi当前不指向任何对象。
cosnt int &pi = 0;
编译器在内部发生以下的转化:
int temp = 0;
const int &pi = temp;
指针既可以只象一个对象也可以什么也不指
引用之间的赋值和指针之间的赋值不同。
指针:
int ival= 1024,ival2 = 2048;
int *pi = &ival, *pi2 = &ival2;
这时候写 pi = pi2;//pi指向的对象ival并没有改变,实际上pi被赋值 为pi2所指向的对象。
引用:
int &ri = ival,&ri2 = ival2;
这时候写 ri = ri2;//改变的是ival,而不是引用本身ri。赋值之后,两个引用还是指向各自的原来对象。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯