C++指针与引用,动态数组,浅拷贝与深拷贝

  • 指针和引用的区别
    引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。
    引用初始化后不能被改变,指针可以改变所指的对象。
    不存在指向空值的引用,但是存在指向空值的指针。

从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。
而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。

What is the value of a? 20,改变了a的值

 int a = 10;
 int b = 20;
 int &c = a;
 c = b; 

What is the value of a?10,只是改变了c的指向

 int a = 10;
 int b = 20;
 int *c = &a;
 c = &b;

  • 利用new生成动态数组
int size, *dynamic_array, i;
cout << "Enter an array size: ";
cin >> size;
dynamic_array = new int[size];
for (i = 0; i < size; i++) 
dynamic_array[i] = i;
ndelete [] dynamic_array; 
  • 浅拷贝与深拷贝
    把现有的一个对象的所有成员属性拷贝给另一个对象的需求
    浅拷贝:把所有内容再复制一份,若有指针成员可能会出现问题
    深拷贝:指向对象的地址
    可用复制构造函数,实现深呢拷贝,不然默认的就是浅拷贝。

  • 返回局部变量
    可以返回局部变量本身,但是不可以返回指向局部变量的指针。但是如果是用new构建点局部变量的指针,可以返回,因为new会在一个额外的地址存储变量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值