陣列及指標知識點總結

2021-10-12 07:25:11 字數 4136 閱讀 5283

第9章陣列

第1課知識點一

定義一維陣列

格式: 型別名陣列名[元素個數]

例1 定義乙個包含4個整數的陣列a

int a[4];

例2 定義乙個包含3個雙精度數的陣列b

double b[3];

注意: c語言中陣列的下界從0開始計數。

例如: a[4]的4個元素分別為a[0]、a[1]、a[2]、a[3]

知識點二

一維陣列的初始化

用一對大括號將陣列的初值括起來。

例1 int a[3]=;

此例中a[0]值為1、a[1]值為2、a[2]值為3

例2 int a[5]=;

此例中陣列a的全部元素值均為0

例3 int a[3]=;

此例中由於初值個數多於陣列元素個數,所以非法。

例4 int a[ ]=;

此例中省略陣列元素個數,初值為4個0

等價於int a[4]=;

注意: 陣列名是乙個常量值,不能對它賦值。

例如: int a[3];

a=5; 此語句非法,應改為a[0]=5;

知識點三

一維陣列應用

例1 從鍵盤上輸入10個整數,輸出最大數和最小數。

#include

main()

printf("最大數是%d\n",max);

printf("最小數是%d\n",min);

}例2 斐波數列的定義如下:

1、1、2、3、5、8、13、……

程式設計輸出斐波數列的第40項值。

#include

main()

練習題1 從鍵盤上輸入10個整數,輸出其中完全平方數之和。

2 從鍵盤上輸入10個整數,輸出和平均數最接近的數。

第2課知識點一

定義二維陣列

格式: 型別名陣列名[一維上界][二維上界]

例1 定義乙個2行2列的整型陣列a

int a[2][2];

此例中陣列a共有4個元素,分別是a[0][0]、a[0][1]、a[1][0]、a[1][1]。

例2 定義乙個4行4列的整型矩陣a

int a[4][4];

二維陣列看成一維陣列

例如: a[3][4]看成由a[0]、a[1]、a[2]組成的一維陣列,每個元素又是由4個元素組成的一維陣列。

注意: a[0]、a[1]、a[2]不是元素,而是陣列每行首位址。

知識點二

二維陣列的初始化

用巢狀的大括號將陣列初值括起來。

例1 int a[4][3]=, , , };

例2 int a[4][3]=, , , };

此例中系統自動給空缺的地方補0

例3 int a[4][3]=, };

系統自動給後面的行補初值0

例4 int a[4][3]=;

此例中陣列a的第一行中元素和第二行的第乙個

元素依次為1,2,4,5其餘全部為0

知識點三

定義二維陣列大小

例1 int a[ ][3]=, , , };

有4個行花括號,因此說明是4行3列。

例2 int a[ ][3]=;

這種方式計算規則:

1)第二維數值能被初值個數整除

第一維數=商數

2)第二維數值不能被初值個數整除

第一維數=商數+1

因此上例中表示乙個2行3列陣列。

知識點四

二維陣列應用

例1 從鍵盤上輸入5個學生3門課程的成績,分別計算

每個學生的平均分和每門課程的平均分。

#include

#define m 5

#define n 3

main()

printf("\n");

printf("每門課程的平均分\n");

for(i=0;i<=n-1;i++)

} 例2 從鍵盤上輸入乙個4行4列整數矩陣,輸出左上至

右下對角線元素之和。

#include

#define m 4

#define n 4

main()

練習題1 從鍵盤上輸入乙個4行4列的整數矩陣。輸出此矩陣右上至左下對角線元素之和。

2 從鍵盤上輸入乙個4行4列的整數矩陣。輸出此矩陣下半三角形的所有元素之和。

3 從鍵盤上輸入乙個4行4列的整數矩陣。輸出此矩陣最外圍元素之和。

指標第1課

知識點一

定義一級指標

格式: 型別名 *變數名

例1 定義兩個指向整型變數的指標p1和p2。

int *p1, *p2;

例2 定義兩個整型變數m和n及兩個指標p和q,並使

p和q分別指向m和n。

int m, n, *p, *q;

p=&m; 表示p存放變數m的位址

q=&n; 表示q存放變數n的位址

例3 定義乙個包含10個整數的陣列a和乙個指標p,並

使p指向a。

int a[10], *p;

p=a; 表示p指向陣列a的首位址,即a[0]的位址。

注意: 例3中p=a不能寫成p=&a,因為a本身就是位址。

知識點二

定義二級指標

格式: 型別名 **變數名

假設已有下列定義:

int **p, *s, k=0;

例如: s=&k; 指標s指向變數k的位址

p=&s; 指標p指向指標s的位址

此時p為指向指標的指標,即二級指標。

知識點三

指標間的賦值

假設已有下列定義:

int *q, *p, k=0;

q=&k;

例如: p=q; 表示兩指標間賦值,讀作p指向q。

此時p和q均指向變數k的位址。

知識點四

空指標在c語言中空值用null表示,其值為0

定義指標時可以給指標賦值null

例如: int *p=null; 表示p沒有指向任何位址

等價於p=』\0』; 或 p=0;

注意: 此時指標p沒有實際單元,所以暫時不能訪問。

例如: int *p=null;

printf(「%d」,*p); 此語句會產生出錯資訊

第2課知識點一

通過指標引用儲存單元

假設已有下列定義:

int *p, m, n=0;

p=&n;

例如: m=*p; 表示將p指向儲存單元內容給變數m

等價於m=n;

*p=*p+1; 等價於n=n+1;

注意: *p=*p+1; 還可以寫成下面的形式

*p+=1; 或 ++*p; 或 (*p)++;

知識點二

指標的移動

當指標指向一片連續空間時,移動才有意義。

假設已有下列定義:

int a[5], *p, *q, k;

p=a;

例如: q=p+2; 表示將q指向元素a[2]的位址

p++; 表示將p向後移乙個單元

q--; 表示將q向前移乙個單元

k=p[2]; 等價於k=a[3];

知識點三

指標的比較

若兩指標指向一片連續空間,可比較大小。

假設已有下列定義:

int a[10], *p, *q, k;

p=a;

q=p+2;

例如: if( p由於條件成立,所以輸出p小於q。

k=q-p; 表示p和q相差的位址值

最後k值為2

第3課知識點一

指向陣列的指標

假設已有下列定義:

int *p, *q, k;

int a[3][3];

例如: p=&a[2][2]; 表示p指向元素a[2][2]的位址

p=a[1]; 表示p指向陣列a第二行的首位址

p此時p指向元素a[1][1]的位址

k=p[2]; 等價於k=a[2][0];

q=p-3; 此時q指向元素a[0][1]的位址

k=q[1]; 等價於k=a[0][2];

指標知識點總結

指標及其應用 關於指標的考點 12 24分 指標與指標變數的概念 指標與位址運算子。變數 陣列 字串 函式 結構體的指標,以及指向變數 陣列 字串 函式 結構體的指標變數,通過指標引用以上各型別資料。用指標作函式引數。返回指標值的指標函式。指標陣列 指向指標的指標。main函式的命令列引數。知識點歸...

指標概念知識點總結 經典

變數的位址就是變數的指標。變數的值和變數的位址是不同的概念,變數的值是該變數在記憶體單元中的資料。用來存放指標 位址 的變數就稱為指標變數。若把某變數的位址賦值給指標變數p,則稱指標變數p指向該變數。定義指標變數的一般形式為 型別名 指標變數名 其中 為說明符,而不是運算子。通常指標變數可以通過以下...

夢羽天堂的C語言陣列知識點總結

陣列定義 陣列是有序的並且具有相同型別的資料的集合。一維陣列 1 一般形式 型別說明符陣列名 常量表示式 例如 int a 10 元素為a 0 a 9 2 常量表示式中不允許包含變數,可以包含常量或符號常量。3 陣列元素下標可以是任何整型常量 整型變數或任何整型表示式。4 可以對陣列元素賦值,陣列元...