<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
指標就是指向變數在記憶體中的地址
資料是存放在記憶體中的,每一個變數都有一個記憶體地址,假設是一個int型別變數a,佔4個位元組的記憶體區,那麼在記憶體中如果是小端方式儲存,我們建立指標p,把a的地址賦值給p,就是把a的首地址0x1100賦值給指標p,這個時候p的值就是變數a在記憶體中的首地址
int a =10; int*p; p=&a; //把a的首地址賦值給P
也就是說指標的值是這塊記憶體區域的首地址
記憶體是一個很大的,線性的位元組陣列,每一個位元組都是固定8個二進位制位組成,計算機對每個記憶體單元都進行了編號,這個編號就稱為記憶體地址,地址決定了記憶體單元在記憶體中的位置
在32位元系統中,處理器一次能處理的最大位數是2的32次方 ,也就是一次處理4個位元組的記憶體資料,哪麼指標的長度也就是4個位元組。
在64位元系統中,處理器一次能處理的最大位數是2的64次方 ,也就是一次處理8個位元組的記憶體資料,哪麼指標的長度也就是8個位元組。
32位元系統指標4個位元組 64位元系統8個位元組
const 是 constant 的縮寫,本意是不變的,不易改變的意思
也就是說使用const修飾的變數,其值是不允許改變的
const int a = 7; int b = a; // 正確 a = 8; // 錯誤,不能改變
在瞭解了上面的基礎知識之後,我們來看一下什麼是指標常數,常數指標和指向常數的指標
首先說一下怎麼快速的記住他們的區別,只需要按照命名的順序來讀,就可以很好地記憶
比方說:
int * const p =&a;
首先是一個指標int * , 然後一個const常數 那麼p就是指標常數
const int *p=&a;
首先是一個const常數, 然後一個指標int * 那麼p就是常數指標
是不是很好記憶
int * const p =&a;
特點:指標的指向不可以修改,指標指向的記憶體的值可以修改
因為const的功能就是限定不可以修改,所以我們看到指標常數是先有了int *指標,再有的const修飾p 所以p的值(指向的記憶體地址) 是不可以修改的
也就是const限制的是指標p的值,但是沒有限定p指向的記憶體地址裡的資料,所以記憶體的資料可以修改
舉例:
int a=10; int * const p =&a; //定義指標常數,指向int a的地址 *p = 20; //正確,指向的記憶體地址中的資料可以修改 p=&b; //錯誤,指向的記憶體地址不可以修改
箭頭是指標指向的記憶體值,是不可以修改的,但是指向的記憶體地址中的資料可以修改
const int *p=&a;
特點: 指標的指向可以修改,但是指標指向的值不可以修改。
常數指標,首先要是常數。就是指向的值要是一個常數,但是指向的記憶體地址不做限制
int a=10; int b=10; const int *p=&a; //定義常數指標,指向int a的地址 *p = 20; //錯誤,指向的記憶體地址中的資料不可以修改 p=&b; //正確,指向的記憶體地址可以修改
箭頭是指標指向的記憶體值,是可以修改的,但是指向的記憶體地址中的資料要和之前的一致
const int const *p=&a;
特點: 指標的指向不可以修改,指標指向的值也不可以修改。
兩個const限制,一旦指向之後就不可以做修改了
int a=10; int b=10; const int const *p=&a; //定義指標常數,指向int a的地址 *p = 20; //錯誤,指向的記憶體地址中的資料不可以修改 p=&b; //錯誤,指向的記憶體地址不可以修改
空指標就是指向地址為空的指標
注意:空指標指向的記憶體是不可以存取的
//-------空指標-------// int *p4 = NULL; //cout << *p4 << endl; //執行Error,使用指標時必須先判斷是否空指標
野指標是指標指向了一個隨意的記憶體地址,如果使用,會造成不可預知的記憶體錯誤
//-------野指標(懸浮、迷途指標)-------// int *p5 =0x1100; //任意賦值的野指標 //cout << *p5 << endl; //執行Error int *p6 = new int(5); delete p6; //刪除p6的指向 p6 = NULL; //一定要有這一步,否則p6會隨機的指向一個地址
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45