當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:指針函數(shù)詳解
1. 指針:(數(shù)據(jù)類型)
保存地址的數(shù)據(jù)類型;
2. 指針變量:(保存地址的變量)
指向p:保存p的地址
3. 變量的首地址:&變量名;
4. 指針的定義:
類型名 變量名;
類型名 * 變量名;(*表示指針變量);
(指針的計(jì)算=====類型名)
定義:先*,后變量名,后類型名。
Int -3 *-1 p -2 ;
5. 指針?biāo)甲止?jié)(數(shù)據(jù)類型)
在32位系統(tǒng)中,占4個(gè)字節(jié);
6. 指針變量類型:(去掉變量名)
Int * * ppf ;
7. 指針定義結(jié)束后必須初始化,避免野指針;
8. 內(nèi)存空間的訪問(wèn):
直接訪問(wèn):通過(guò)變量名的方式訪問(wèn);
間接訪問(wèn):通過(guò)地址的方式訪問(wèn);
9. 取值運(yùn)算符:*地址;和&是互逆運(yùn)算;
10. 取址運(yùn)算符:&變量名;(首地址)
11. 段錯(cuò)誤:
操作非法的內(nèi)存空間;(操作野指針);
使用系統(tǒng)未經(jīng)分配給自己的內(nèi)存空間;
12. 空指針NULL 宏定義為0
13. 指針初始化:=NULL;
14. *指針變量==等于變量名,而不是內(nèi)存空間存放的常量;
int i=5, *p=&i;
*p=8; //正確,更改i的值。
答案:B.C
B: *p2不建議使用;查看非法內(nèi)存空間;
D: *p2=*p1; 操作(寫)非法內(nèi)存空間;
15. 指針(地址)的運(yùn)算(數(shù)組名的運(yùn)算)
物理地址=絕對(duì)地址+地址偏移
P+i ===== p+i*sizeof(數(shù)據(jù)類型)
16. 數(shù)組元素的指針訪問(wèn):
若P=arr; //p=&arr[0]
則:
*(P+i)==*(arr+i)==arr[i]==p[i]
無(wú)條件:arr[i]=====*(arr+i)
P[2]===*(p+2)==a[7]
17. 數(shù)組編程技巧:(連寫)
int i , *p=&i ;
18. 函數(shù):
返回值類型 函數(shù)名 (形參列表)
函數(shù)的入口: 形參;調(diào)用時(shí)分配內(nèi)存空間)
參數(shù)傳遞:值傳遞;地址傳遞;
參數(shù)傳遞為副本模式,地址傳遞時(shí)若要需要加const
函數(shù)的出口:返回值;副本模式
19. GDB調(diào)試
1. 編譯帶調(diào)試參數(shù)的可執(zhí)行文件。
2. 設(shè)置斷點(diǎn)b 運(yùn)行r
3. next 語(yǔ)句(n) ; step 單步 (s)
4,。退出q;
20. 函數(shù)的聲明
形參變量名可省略;但是定義時(shí)不可缺省。
21. 二維數(shù)組名:(數(shù)組名是一個(gè)指針)
22. 技巧:
元素下標(biāo)【】:隱含有*