c++练气第五重c语言指针初阶

指针是什么?

指针理解的2个要点: 1. 指针是内存中一个最小单元的编号,也就是地址 2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量

总结:指针就是地址,口语中说的指针通常指的是指针变量。

指针变量 我们可以通过&(取地址操作符)取出变量的内存起始地址,把地址可以存放到一个变量中,这个 变量就是指针变量

2. 指针和指针类型

我们都知道,变量有不同的类型,整形,浮点型等。那指针有没有类型呢?

有的

那指针类型的意义是什么?

2.2 指针的解引用

解引用这个指针就是取出该地址上的数据

3. 野指针

野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

3.1 野指针成因

1. 指针未初始化

2. 指针越界访问

什么是越界访问呢?

3.2 如何规避野指针 1. 指针初始化

2. 小心指针越界

3. 指针指向空间释放,及时置NULL

4. 避免返回局部变量的地址

5. 指针使用之前检查有效性

4. 指针运算

指针+- 整数

指针-指针

指针的关系运算

例:指针+-整形

4.2 指针-指针

5. 指针和数组

数组名表示的是数组首元素的地址

int arr[10] = {1,2,3,4,5,6,7,8,9,0};

int *p = arr;//p存放的是数组首元素的地址

既然可以把数组名当成地址存放到一个指针中,我们使用指针来访问一个就成为可能。

可以看到地址是一样的

所以p+i其实计算的是数组arr下标为i的地址。那我们就可以直接通过指针来访问数组。

如下:

6. 二级指针

指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?这就是二级指针。

对于二级指针的运算有:

ppa通过对ppa中的地址进行解引用,这样找到的是pa,*ppa其实访问的就是pa.

int b = 20;

*ppa = &b;//等价于 pa = &b;

**ppa先通过*ppa找到pa,然后对pa进行解引用操作:*pa,那找到的是a.

**ppa = 30;

//等价于*pa = 30;//等价于a = 30;

7. 指针数组

指针数组是指针还是数组?

答案:是数组。是存放指针的数组。

数组我们已经知道整形数组,字符数组。

那指针数组是怎样的?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值