设为首页 加入收藏

TOP

引用的本质分析(二)
2019-09-15 00:32:29 】 浏览:92
Tags:引用 本质 分析
的操作(赋值、取地址等)会传递到代表的变量上
指针可以保存不同的地址 引用在初始化之后无法代表其他变量
指针可以被const修饰,成为常量只读变量 const引用使其代表的变量具有只读属性

在工程项目开发中

  • 当进行C++编程时,直接站在使用的角度,引用和指针没有任何关系
  • 当对C++代码进行调试分析时,一些特殊情况,可以考虑站在C++编译器的角度,引用在内部实现为指针常量

我们给出一个站在C++编译器的角度看待引用的示例,下面这段代码有问题吗?

int a = 1;
int b = 2;
int *pc = new int(3);
int &array[] = {a, b, *pc};
  • 数组是一片连续的内存空间
  • 引用数组会破坏该特性,各元素代表的变量可能存储在不同的位置
  • 因此,C++不支持引用数组!!!!!!
#include <stdio.h>

int a = 1;

struct SV
{
    int &x;
    int &y;
    int &z;
};

int main()
{
    int b = 2;
    int *c = new int(3);
    SV sv = {a, b, *c};
    int &array[] = {a, b, *c}; //&array[1] - &array[0] != 4,编译报错

    printf("&sv.x = %p\n", &sv.x);
    printf("&sv.y = %p\n", &sv.y);
    printf("&sv.z = %p\n", &sv.z);

    delete c;

    return 0;
}

首先,注释掉代码第17行,编译运行结果如下,可以看出打印出的内存地址是各不相同的。

然后,去除代码第17行注释,结果编译报错,原因就是数组的三个元素地址不连续,而是各不相同。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇内联函数分析 下一篇关于c++模板非类型参数中指针和引..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目