为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第2天 物联网/嵌入式工程师学习笔记02

标签:
C C++ 嵌入式

【九月打卡】第2天 物联网/嵌入式工程师学习笔记02

课程信息

课程内容概述

1. 指针保存数组

数组名代表数组首元素的地址  
a <====>&a[0] <====>0xdff30

int a[5]; 数组共有5个元素,分别是a[0]~a[4];

a[0] <====>int  
&a[0] <====>int *

=====================================  
int a[5];  
int *p = &a[0];

而a和&a[0]是等价的,故也可以有写法.  
int *p = a;

2. 用一级指针遍历一维数组

buf[i]<====>*(buf + i)<====>*(p + i)<===>p[i]

3. 一级指针和一维数组的区别

(1) 一级指针主要保存地址,占4bytes,而数组有多个内存空间用来存放不同的数据,空间较大。  
p的类型 int *  
a的类型 int [5]

(2 )数组名是一个地址常量,表示数组首元素的地址,常量是不能更改.

int a[5] = {10,20,30,40,50};  
a++; //由于是一个常量,用户不能更改.,这种代码是会报错的, a为地址常量,是数组第一个元素的地址,系统自动分配。

![图片描述](https://img1.sycdn.imooc.com/63173dca0001486e12160423.png)

4. a ,&a[0] 和 &a 之间的关系

a[0]为int类型,故&a[0] + 1一次偏移一个int类型的大小,4 bytes.  
a为int [5]类型,故&a + 1 一次偏移一个int [5]类型的大小,20 bytes.

学习心得

通过这节课的学习,对指针与数组的关系有了更深的认识。对通过指针访问和操作数组有了更深的了解,之前看书中提到的那些莫名其妙的指针代替数组的操作,有了本质上的认识,很有收获。

课程截图

1. a 与 &a[0] 的代码测试

图片描述

2. 通过指针访问数组的操作

图片描述

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消