2017年网站建设公司,青海网网站建设,西安网站seo,免费做网站公司说在前头#xff0c;纯属个人理解#xff0c;关于引用是否有地址#xff0c;实际上并没有一个很统一的说法#xff0c; C标准没有规定一个引用是否需要占用一块内存。
这里引用知乎“C 中引用是一块内存的标记#xff0c;那引用本身有地址吗_百度知道 (baidu.com)”里面的…说在前头纯属个人理解关于引用是否有地址实际上并没有一个很统一的说法 C标准没有规定一个引用是否需要占用一块内存。
这里引用知乎“C 中引用是一块内存的标记那引用本身有地址吗_百度知道 (baidu.com)”里面的回答 正文
现在开始自己的理解开始自己的胡说八道再次强调纯属个人理解欢迎讨论和指正。另外我们现在统一按照c里面的概念来讲
一结论我认为引用是没有地址的否则引用和指针有什么区别
论证假设有一个变量a 1那么a是一个对象a自己的地址是x0001这个地址存放的是1。在此情况下如果b是一个指针变量b指向a那么这里的意思是b本身也是有地址的设b的地址为x0016b这个地址里面存放的是a的地址x0001。
若c为a的引用如果c本身有地址那么c指向a也即c存放的也是a的地址则c和b没有区别所以不成立因此引用没有地址
现在问题来了如果引用没有地址那么cpu到底是怎么访问到引用c的呢
二重磅按照c的概念我们说a 1是一个对象意思是说a本身是一块内存空间它的地址是x0001x0001这块地址里面存放了1。所以说真实的对象其实是存放了1的x0001这个内存空间a其实也只是一个名称但是我们现在把a和x0001绑定到一起了!!!!!!!相当于一个人他身份证上的名字之间的关系假设没有重名哈也就是说每当我们说a的时候其实说的就是x0001说x0001也相当于说a。 三那么引用是什么呢按照上面的思路实际上x0001这个内存空间可以叫任何名字我现在假定给x0001取了一个别名qq就是一个引用引用相当于外号
如果这还是不明白那么再换个说法假设一个人他身份证上面的名字叫做“小明”这个时候a就是小明现在我给这个“小明”取了一个外号“狗子”那么狗子就是引用q。 补充一点在此情况下对引用q取地址实际上就是对对象a取地址。所以你说引用有地址也对说他没地址也对