學號20145220《信息安全系統設計基礎》第12周學習總結
教材學習內容總結
學號20145220《信息安全系統設計基礎》第11周學習總結 - 20145220韓旭飛 - 博客園 http://www.cnblogs.com/hxf5220/p/6107112.html
學號20145220《信息安全系統設計基礎》第10周學習總結 - 20145220韓旭飛 - 博客園 http://www.cnblogs.com/hxf5220/p/6083037.html
學號20145220《信息安全系統設計基礎》第9周學習總結 - 20145220韓旭飛 - 博客園 http://www.cnblogs.com/hxf5220/p/6060371.html#3559776
視頻學習內容總結
指針數組與數組指針
數組指針(也稱行指針)
定義 int (*p)[n];()優先級高,首先說明p是一個指針,指向一個整型的一維數組,這個一維數組的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型數據的長度。
如要將二維數組賦給一指針,應這樣賦值:
int a[3][4];
int (*p)[4]; //該語句是定義一個數組指針,指向含4個元素的一維數組。
p=a;//將該二維數組的首地址賦給p,也就是a[0]或&a[0][0]
p++; //該語句執行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]
指針數組
定義 int p[n];[]優先級高,先與p結合成為一個數組,再由int說明這是一個整型指針數組,它有n個指針類型的數組元素。這里執行p+1時,則p指向下一個數組元素,這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變量可以用來存放變量地址。但可以這樣 p=a; 這里p表示指針數組第一個元素的值,a的首地址的值。
如要將二維數組賦給一指針數組:
int *p[3];
int a[3][4];
p++; //該語句表示p數組指向下一個數組元素。注:此數組每一個元素都是一個指針
for(i=0;i<3;i++)
p[i]=a[i];
指針數組和數組指針區別及區分
二者區別:
指針數組:首先它是一個數組,數組的元素都是指針,數組占多少個字節由數組本身的大小決定,每一個元素都是一個指針,在32位系統下任何類型的指針永遠是占4個字節。它是“儲存指針的數組”的簡稱。
數組指針:首先它是一個指針,它指向一個數組。在32位系統下任何類型的指針永遠是占4個字節,至于它指向的數組占多少字節,不知道,具體要看數組大小。它是“指向數組的指針”的簡稱。
如何區分:
“[]”的優先級比“”要高。p1先與“[]”結合,構成一個數組的定義,數組名為p1,int修飾的是數組的內容,即數組的每個元素。那現在我們清楚,這是一個數組,其包含10 個指向int 類型數據的指針,即指針數組。至于p2就更好理解了,在這里“()”的優先級比“[]”高,“”號和p2 構成一個指針的定義,指針變量名為p2,int 修飾的是數組的內容,即數組的每個元素。數組在這里并沒有名字,是個匿名數組。那現在我們清楚p2 是一個指針,它指向一個包含10 個int 類型數據的數組,即數組指針。
關于函數指針和指針函數
指針函數是指帶指針的函數,即本質是一個函數。函數返回類型是某一類型的指針
類型標識符 函數名(參數表) ;具體格式:int f(x,y);
首先它是一個函數,只不過這個函數的返回值是一個地址值。指針函數一定有函數返回值,而且在主調函數中,函數返回值必須賦給同類型的指針變量。例如:
01.float fun();
02.float p;
03.p = fun(a);
函數指針是指向函數的指針變量,即本質是一個指針變量。
指向函數的指針包含了函數的地址,可以通過它來調用函數。聲明格式如下: 類型說明符 (*函數名)(參數)
使用的時候:
01.int (f)(int x); /聲明一個函數指針 /
02.f=func; /將func函數的首地址賦給指針f */
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
參考資料
- 《深入理解計算機系統V2》學習指導
- ...