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