亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【備戰春招】第二十天一級指針和一維數組

標簽:
嵌入式

课程内容:

一级指针和一维数组

数组

int a[5];

(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;

一级指针遍历一维数组

int buf[5] = {10,20,30,40,50};

int *p = &buf[0]; //int *p = buf;

buf[0]<===>int

buf<=>&buf[0]<=>int ; 结论: buf[i]<===>(buf + i)<=>*(p + i)<=>p[i]

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

(1)一级指针主要保存地址,占4bytes,而数组有多个

内存空间用来存放不同的数据,空间较大。

p的类型 int *

a的类型 int [5]

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

int a[5] = {10,20,30,40,50};

int *p = a;

p++;//true;

a++; //error, a为地址常量,是数组第一个元素的地址,系统自动分配。

// 由于是一个常量,用户不能更改.

结论:数组赋值给指针,数组是常量不能更改,指针是变量可以更改

数组a指针p,可以p++不可以a++

关系与结论

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

a<===>&a[0], a[0]是int类型,占一个小int单元的带下,占4bytes.

&a中,代表了int [5]整个大单元的大小。

a+1 ,偏移4bytes大小

&a + 1,偏移20bytes大小

结论

int a[5];

总结:

a <===>&a[0]

a + 1

&a[0] + 1

&a + 1

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

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

笔试题:

char a[5] = {10,20,31,32,40};

*(((char *)(&a + 1)) - 3) - 2 ====>输出多少? //29

学习收获:

通过本章学习了解到了 指针首地址的保存形式,数组和指针直接的对等关系

还有a和&a单元的大小

截图打卡:

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Python工程師
手記
粉絲
1
獲贊與收藏
4

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消