C语言手把手零基础笔记17—指针1

指针是什么?指针和指针的类型?野指针 指针运算 指针和数组 二级指针指针数组

指针是一个编程语言的对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需要的变量单元,可以说,地址指向该变量单元。因此,将地址形象化称为指针。意思是通过它能找到它为地址的内存单元。

d5a9154d11414511a0deb131480d07b1.png

 可知他们的长度都是4或者8。

指针类型决定了指针进行解引用操作时候,能够访问的空间大小。

int*p:*p可访问4个字节

char*p:*p可访问1个字节

double*p:*p可访问8个字节

0dd79cf6dfef4022864cdaf22073ead6.png

指针类型决定了指针+1会向后跳几个字节。

指针类型决定了:指针一步走多远(指针的步长)

335b1fe54ac84f088bac4e57cc9d1845.png

这里地址存放的是数组的首元素的地址。 

野指针:

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

野指针成因:

1、指针没有初始化。

91808589b9c84b358cf85d5f5bacfa3f.png

2、指针越界访问

 

4c705e65c74d4feebc471944407b6820.png

 

3、指针指向的空间已经被释放了

b8871d6279164d55986d686dc02dc63f.png

如何避免野指针?

1、指针初始化

2、小心指针越界

3、指针指向空间释放即使置NULL

4、指针使用之前检查有效性

 

指针的运算

1、指针+-整数

2、指针-指针

3、指针的关系运算

4d1bb61e29d24e96857da0f9a44cfbd3.png

指针-指针=中间元素的个数,可以从如下看出,大地址减小地址是中间元素的个数,如果是小地址-大地址的绝对值是中间元素的个数。

93b27856f7ee436999f766262179bd19.png

通过指针减指针来实现求字符串长度

c8e0150042e24b7eadd1e3995418453d.png

 

1、&arr--&数组名--数组名不是首元素的地址,是数组名这里表示整个数组

--&数组名:表示取出的是整个数组的地址

2、sizeof(arr)---sizeof(数组名):此时此刻数组名不是首元素地址,这里表示整个元素的数组,
  ----sizeof(数组名)计算的是整个数组的大小

eb832abe3282434b8a2dbda3b29d75eb.png

 

😁如果我们对地址加一,这三者又有什么区别呢?

df80ac1564fa4e6c85663d824d143e56.png

 

🏆二级指针

abcd6772911c4bdba086b4dcf5e345b2.png

 

1、整形数组-存放整形

2、字符数组-存放字符

3、指针数组-存放指针

(里面放的每一个元素都是int*的类型)

76c8e7ffcd4c4233a9324b03cab797a6.png

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小奶盖儿月月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值