指针,简单的说就是在一个变量中存放地址值,那么这个变量就是指针;引用,就是给内存地址一个别名,当然这个内存地址之前已经被取过名字了。
指针大小,和机器的寻址线数相关,也和操作系统相关;比如说如果你的机器是64位机,但是你装的系统是32位系统,那么你的指针变量的大小应该还是4byte吧?没有验证过,只是猜想,有同学验证过,欢迎讨论。
引用大小,和其引用的变量相关,其实你就把引用当成正常的变量使用就对了,只不过这个引用变量和另外一个变量都是同一块内存的名字罢了。
区别:
指针,可以被修改,也就是一个指针变量内部存的指针地址可以被修改为其他的地址值。而引用指正在初始化的时候引用到另外一块内存,之后就改变不了了,这个改变不了是指你不能把这个引用引用到另外的一块内存去了,你在程序里面试试这样修改就知道为什么做不到了。
const int* a; 常量指针,说明这个指针指向一个常量的地址,这个指针指向的内存空间的值不能修改哦。
int* const b; 指针常量,说明这个指针变量不能被修改了,也就是说你不能把这个指针变量重新赋值哦,你不能让他指向别的内存地址了哦。
const int& c; 常量引用,这个别名是给一个常量所在内存块取得哦,你就不能改变这个内存块的内容了哦。
int& const d; 引用常量,这个本身不存在哦,在程序里面这样写通过不了编译哦。因为引用本身就是作为另一块内存的别名了,也做不到的哦。
就这么一些了呢,比起别人写了一大堆,这个还算简洁了吧。。。
时间: 2024-10-01 07:22:43