久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > 嵌入式學習筆記:指針(zhen)和指針(zhen)變量的區別(bie)(指針(zhen)知識點大(da)全)

嵌(qian)入式學習筆記(ji):指(zhi)針(zhen)和(he)指(zhi)針(zhen)變量的(de)區別(指(zhi)針(zhen)知識點大全(quan)) 時間:2018-09-13      來源:未知(zhi)

1.指針和地址(zhi)

指針:指針在c語言(yan)中屬于(yu)一種(zhong)類型,這種(zhong)類型對應(ying)的變量專門用(yong)于(yu)存儲(chu)地址

地(di)址:存(cun)儲(chu)(chu)單(dan)元的(de)編號,用于(yu)區分不(bu)同的(de)存(cun)儲(chu)(chu)單(dan)元,存(cun)儲(chu)(chu)在內存(cun)中的(de)每個數據(ju)都會有地(di)址

例如:char ch;//分配一個字(zi)節(jie) short a;//分配兩個字(zi)節(jie)

注意(yi):地址(zhi)是一個常量

2.直接引(yin)用(yong)與(yu)間接引(yin)用(yong)

 直接引用(yong)(yong):表示(shi)通過變量(liang)名來引用(yong)(yong)(對變量(liang)讀與寫)

間接引用:通過指(zhi)針類型變(bian)量來引用,即將變(bian)量地(di)址存儲到指(zhi)針變(bian)量中

√:使(shi)用*來表示(shi)指針類(lei)型

定義指針(zhen)類型的(de)變量:< 類型修(xiu)飾符(fu)> * 變量名

例如:

理解:P是(shi)地址(zhi);*P是(shi)一(yi)個(ge)值 int*p是(shi)一(yi)個(ge)地址(zhi)

注意:任(ren)何類型必須定義變量(liang)之(zhi)后才會分配空(kong)間

區分:

一個指(zhi)針變量(liang)所占用的(de)(de)空間(jian),和操(cao)作的(de)(de)地址總線(硬(ying)件(jian))的(de)(de)寬度有(you)(you)關系,一般(ban)為32位/64位,操(cao)作系統本(ben)身的(de)(de)能夠(gou)一次處理(li)的(de)(de)數據大小有(you)(you)關

3.指針(zhen)變(bian)量(liang)的初始(shi)化

指(zhi)針(zhen)變量在使用時,一定(ding)(ding)要(yao)指(zhi)向(xiang)一個確定(ding)(ding)的(de)(de)存儲空(kong)間(賦值或者初始化),否則指(zhi)向(xiang)的(de)(de)位置是(shi)隨機(ji)的(de)(de)(稱為“野指(zhi)針(zhen)”)。如(ru)(ru)果不確定(ding)(ding)指(zhi)針(zhen)類(lei)型(xing)變量所指(zhi)向(xiang)的(de)(de)空(kong)間,可以初始化為NULL,如(ru)(ru):int *p=NULL

注意:int *p=1000(錯誤(wu)) 在有操(cao)作系統的情況(kuang)下,不能給指針初始化(hua)一個常(chang)量

補充:如果不確定指針類型變量所(suo)指向的空間,可(ke)以初始化(hua)為(wei)NULL,對指向NULL的指針進行(xing)間接運算會產生";段錯誤(wu)",解決(jue)方法如下(xia):

Segmentation fault (core dumped) //出現段(duan)錯誤

Gdb //來確定是第幾行

gdb a.out

執行 r 命令

Program received signal SIGSEGV, Segmentation fault.

0x08048409 in main () at 03pointer.c:7

7 *p = 300;

(gdb) q

4指針變量作為函數參數

使用指(zhi)針類型(xing)的變量作(zuo)為函(han)數的形式參數,與普通變量的語法相(xiang)同,寫成(cheng)指(zhi)針類型(xing)即(ji)可

例如:void swapy(int *pa,int *pb);

使用的指針類型的變(bian)量作為(wei)(wei)函數參(can)數,實際參(can)數需要指定為(wei)(wei)地址或者其他的指針變(bian)量,同時,形(xing)(xing)式參(can)數也分為(wei)(wei)輸入的形(xing)(xing)式參(can)數與(yu)輸出的形(xing)(xing)式參(can)數

輸(shu)入(ru)的(de)形式(shi)參(can)數(shu),一般將實際參(can)數(shu)的(de)值傳遞給形式(shi)參(can)數(shu)

輸出的形式參數,一般通過指針進行(xing)間接引用(yong),可以返回調用(yong)這多個值

作用:主要用于解(jie)決:return 只能返回一個值的問(wen)題

具體例子(常用):output 函數(shu)的應用

 

5指針與一維數(shu)組(zu)

數組(zu)及其元素(su)同(tong)樣占有(you)(you)存儲單(dan)元,都有(you)(you)相應的地(di)址(zhi),所以指針(zhen)即可(ke)以指向(xiang)數組(zu)的元素(su),也可(ke)以指向(xiang)數組(zu)

區別(bie):數組(zu)名與數組(zu)首地址的(de)區別(bie)

作用:

每(mei)個(ge)形式參數都需要分配空(kong)間,而(er)且是獨立的(de)空(kong)間

如果(guo)將數組(zu)整體進行傳遞時,產生一個形式(shi)參數數組(zu),非常(chang)浪(lang)費空間與時間

將(jiang)數(shu)組的(de)首元素的(de)地(di)址進(jin)行傳遞

6.指針運算

當指針指向一(yi)段連續內存空間(jian)某(mou)一(yi)個(ge)地址時(shi),比(bi)如(ru)指向數組元(yuan)素(su)時(shi),就(jiu)可(ke)以進(jin)行(xing)指針元(yuan)素(su),一(yi) 般可(ke)以進(jin)行(xing)如(ru)下(xia)的運算:

自增/自減(jian)運(yun)算(suan):進行加1運(yun)算(suan)與減(jian)1運(yun)算(suan)

求差(cha)值(zhi):兩個指(zhi)針(zhen)變量進(jin)行(xing)減法(fa)運算,前提是指(zhi)向同一段內存(cun)空間

賦值:將一(yi)個地(di)址賦值給一(yi)個指針

 定義(yi)一(yi)個(ge)一(yi)維數組與指(zhi)針(zhen)(zhen)(zhen)變(bian)量,并進行(xing)指(zhi)針(zhen)(zhen)(zhen)運算,包括(kuo)++ / -- ,指(zhi)針(zhen)(zhen)(zhen)-指(zhi)針(zhen)(zhen)(zhen),指(zhi)針(zhen)(zhen)(zhen)-數字

注(zhu)意: int *ptr++ 先取(qu)值后(hou)++;

例子:Int i; int p=&I;

補充:(技巧性)追(zhui)逐法確定第一(yi)、第二個最大值

7.指針(zhen)與(yu)二維數組

C語言把二(er)(er)維(wei)(wei)(wei)數(shu)組看作(zuo)是一(yi)維(wei)(wei)(wei)數(shu)組的集合,即(ji)二(er)(er)維(wei)(wei)(wei)數(shu)組是每一(yi)個元素為一(yi)維(wei)(wei)(wei)數(shu)組的特殊一(yi)維(wei)(wei)(wei) 數(shu)組,即(ji)二(er)(er)維(wei)(wei)(wei)數(shu)組的元素類(lei)型為一(yi)維(wei)(wei)(wei)數(shu)組

理(li)解(jie):二維數(shu)(shu)組(zu)的(de)(de)首(shou)(shou)地址(zhi)(zhi)---一(yi)維數(shu)(shu)組(zu)的(de)(de)首(shou)(shou)地址(zhi)(zhi)---一(yi)維數(shu)(shu)組(zu)的(de)(de)元(yuan)(yuan)素的(de)(de)地址(zhi)(zhi)---元(yuan)(yuan)素的(de)(de)值

一(yi)(yi)(yi)個*或[ ]降一(yi)(yi)(yi)級 一(yi)(yi)(yi)個&升一(yi)(yi)(yi)級

區分:

注:圖2最后一行(xing)錯誤(wu)

8.指(zhi)向一維(wei)數組的指(zhi)針

指針變量(liang)存儲的(de)地(di)址對(dui)應的(de)變量(liang)的(de)類型一般使用類型修飾符來確定

指針與二維數組的結合(he),一(yi)般(ban)為了方便操作行,就是需要(yao)使用指向一(yi)維數組的指針

指向(xiang)一維數(shu)組的指針,用于存儲數(shu)組的地(di)址(zhi)(不是數(shu)組元素的地(di)址(zhi))

例如:

9.指針數組

指針數組主(zhu)要(yao)用于存(cun)儲地址(zhi)的(de)集合,每個元素(su)都是存(cun)儲的(de)一(yi)個地址(zhi)

應用:

補充:(函數性)strcmp 用于(yu)字符串比(bi)較(jiao)

補(bu)充:(技巧性)冒泡排序法

字符串的排序:

10.指向指針的指針

存儲指(zhi)(zhi)針變(bian)量的地址(zhi),使用(yong)指(zhi)(zhi)向(xiang)指(zhi)(zhi)針的指(zhi)(zhi)針

具體例子:

11. void *類(lei)型的(de)指(zhi)針(zhen)

int *p ;//計算(suan)(suan)偏移 +1 偏移4個字節,在進(jin)行間接(jie)引用運算(suan)(suan)(尋址運算(suan)(suan)),操作(zuo)4個字節

char *p ;//計(ji)算偏(pian)移 +1 偏(pian)移1個(ge)字(zi)節(jie),在進(jin)行間(jian)接引用運(yun)算(尋址運(yun)算),操作1個(ge)字(zi)節(jie)

void *q ;//表示無類型(xing)的指針,可以存儲(chu)任何(he)類型(xing)的地(di)址,存儲(chu)時轉換成void *

void *的(de)指針(zhen)不允許進行間(jian)接引用操作,因為不知(zhi)道會操作幾個字節

作(zuo)用:在函(han)數中(zhong)作(zuo)為形式參數時,可以提高對應的(de)通用性(xing)

int *p = (int *)q;//指針類型(xing)的強制(zhi)轉(zhuan)換

具體例子:

上一篇:嵌入式學習筆記:函數入門知識總結

下一篇:嵌入式學習筆記:arm按鍵中斷實現流程

熱點文章推薦
華清(qing)學(xue)員就業榜單
高薪學(xue)員經驗分(fen)享(xiang)
熱點(dian)新聞推薦
前(qian)臺專(zhuan)線:010-82525158 企業(ye)培訓(xun)洽談專(zhuan)線:010-82525379 院校合作洽談專線(xian):010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部