初识 指针

重点:

1、指针是什么?

2、指针和指针类型

3、野指针

4、指针运算

5、指针与数组

6、二级指针

7、指针数组

一、指针是什么?

它是编程语言的一个对象,指的是地址,可通过其找到对应的内存储存单元。

(存放地址的变量叫指针变量,指针是变量,存放的是地址)

(一个内存单元是一个字节,32的平台上一个地址是4个字节,所以一个指针大小是4个字节,64的平台上是8个字节)

二、指针和指针类型?

指针大小都是4或者8个字节,为什么还要有类型呢?
首先我们要明白:
int* p,*p可以访问4个字节

char* p,*p可以访问1个字节

double*p,*p可以访问8个字节

所以指针类型决定了指针向前或者向后走一步的距离。

这又是什么意思呢?这就要谈到指针和整数的加减了。

打印结果,pc+1则在原来的地址上加1个字节,而pi+1则是加4个字节,指针的类型的意义便是如此。 

三、野指针

首先明白什么情况会出现野指针?

1、局部(指针)变量未初始化的时候,就会产生随机值。

2、越界访问

3、指针指向的空间释放(可能发生在局部变量中)

那么如何避免野指针呢?

1、初始化(不知道地址初始化什么的时候,直接初始化为int* p=NULL;明确知道初始化的时候:int a=10;int* p=&a)

2、小心越界(本身不会检查越界)

3、指针指向空间释放(置NULL)

4、使用前检查有效性

四、指针的运算

指针+-整数

指针-指针

指针的关系运算

五、指针和数组

数组名是第一个元素的地址,即它的指针;

(详情见代码)

六、二级指针

 同理还有三级指针

七、指针数组

本质就是数组

int arr[10]整型数组存放的是整形的数组

char ch[5]存放字符的数组叫字符数组

int *parr[5] 整形指针的数组

char * pch[5]字符指针的数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值