第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 可以對陣列元素賦值,陣列元...