C++学习记录(一) 指针和引用

概念

指针:一个变量的地址称为该变量的指针,而存放这个地址的称为指针变量。
引用:对于一个数据,可以建立起其“引用”,相当于给变量起别名。

区别

指针有值,而引用只是一个声明
引用在声明后需要初始化,并不能在使用作为另一个变量的引用。其本质与引用的变量公用同一个空间。
在函数传参的时候,使用
int add(int *a, int *b)
int add(int &a, int &b)

前者需要新建空间,其创建的是函数传入参数的指针变量的地址值(形参),而引用并未创建出新的形参,不需要空间。这里细微的减小了系统内存的开销(虽然不是很多)

在引用的使用上面会有许多的限制,比如:
1)不能建立引用数组
2)不能建立引用的引用,也没有引用的指针

我们更加常用的把引用作为函数传参参数,这一做法不会产生新的开销。

指针的使用

常见的指针使用方式在C++相关书籍里记录的比较详尽,这里主要列出一些个人容易出错的部分

1. 指针数组和数组的指针

指针数组本质是一系列的指针变量,而数组的指针是一个指向数组0地址的指针变量。

int a[10];
int *p = a;	//<可以使用p去访问数组a

int *p[4];  //<这是一个指针数组,p优先和[4]结合
2.函数指针的写法
int max(int a, int b);
int (*p)(int, int);//<括号一定要有,否则成了返回指针的函数了
p = max;

还有就是可以合理的运用typedef进行函数指针的使用

typedef void (*p)(deque<int>&);
p func;
void sortM2L(deque<int> &in);
func = sortM2L;
deque<int> q(N, 0);
func(q);
3.const指针的使用
int a;
const int *p1 = &a; //<指向常量的指针,无法通过p1去更改a的值,但可以用a进行更改
int * const p2 = &a;//<常指针,指针p2的地址无法改变
const int *const p3 = &a;//<我p3就是固定的了,别想动我((lll¬ω¬))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值