計算機二級課程記錄(9)

2021-10-02 16:42:31 字數 3791 閱讀 3514

1.相同型別的變數的集合,占有連續的儲存單元

2.一維陣列

型別名 陣列名[整型常量表示式或整型常量]

陣列名和變數名規則相同

【例子1】

int a[2]

int a[0],int a[1]//只能為整型,下界為0到1

double x[8]=;

double x[6]=0,x7[0];//系統自動補0;

【例子2】

int a=;//系統識別為8個陣列

int a[8]=;

int a[8]={};//三語句作用相同;

【例子1】編寫程式

定義乙個含有30個元素的int型別陣列。依次給陣列元素奇數1.3.5…

然後按每行10個數順序輸出,最後按每行10個數逆運算輸出。

#include#define m 30

main()

//(2)迴圈賦值

printf("\n順序輸出\n");

for(i = 0;i= 0;i--)

printf("\n");

} //(4)逆序輸出

int a[5];

&a[0],&a[1]...//5個元素位址

輸出a與&a[0]相相等

陣列名a也表示位址

陣列名代表陣列的首位址,也就是第乙個元素的位址,改變名字也就改變了位址

【例子1】迴圈移動指標給陣列賦值

int *p,a[10];   //&a[0]

for(p = a,p-a<10;p++)//a為位址

【例子2】通過陣列的首位址引用陣列元素

float a[10] =

for(k =0;k<10;k++)

printf("%4d",*(a+k));//a代表&a[0],*a存a[0]的內容,1,2,3代表向後的位元組數,但二級考此

for(k =0;k<10;k++)

printf("%4d",a[k]);//兩種方法等價,考第一種方法

【例子3】

通過指標引用一維陣列元素

for(p =a ;k < 10;k++)

printf("%4d",*(p+k));//逐個輸出a陣列元素的值

for(p =a,k = 0;k < 5;k++)

【例子4】用下標的變數引用一維陣列元素

int *p,s[10],i;

p = s;

取位址表達方式&s[i],s+i,p+i;

陣列元素的表達方式s[i],(s+i),(p+i)

【例子5】當p指向s的首位址的時候

陣列元素四種表示方式

s[i], * (s+i),*(p+i),p[i]
【注意】

s和p有本質區別

s固定不可變

p可以變化

【例子6】函式之間對一維陣列和陣列元素的引用

編寫程式,通過乙個函式給主函式中定義的陣列輸出若干個大於或者等於0的整數,用複數作為輸出結束標誌;呼叫另一函式輸出該陣列中的資料

#include#define m 100

void arrout(int *,int);int arrin(int *);

main()

int arrin(int *a)

return i;

}void arrout(int *a,int n) //i返還值為k帶入n

【例子7】

編寫函式,對具有10個元素的char型別陣列從下標為4的元素開始,全部設定星號』*』,保持前4個元素的內容不變

#include#define m 10

#define b 4

void setstar(char *,int);

void arrout(char *,int);

main()

; setstar(&c[4],m-b);

arrout(c,m);

}void setstar(char *a,int n)//&c[4]表示c[4]位址為a名的內容

void arrout(char *a,int n)

函式的指標形參和函式體中陣列的區別

#include

#define n 10

int *fun(int a[n],int n)

//自定義函式執行完,b被釋放,

main()

//p為無向指標

陣列名 [下標][下標]

int a[3][4]
第一列第一行a[0][0]

最後一列和最後一行a[2][3]]

下標必定為整數

少於陣列行為0

int a[3]=,,,};//等價int a [4][3]

int [3] = //系統將5個數除3加一

二維陣列和指標

int *p,a[3][4];
a[0]作為乙個整體,當作乙個陣列名

a[0]代表a[0][0]位址

p = a[0],p = a[0]+1//相當於&a[0][1]

p = a;非法

p的基型別和a的基型別不同,乙個為4,乙個為16

&a[0][0]//a[0] + 0;
a[i][j]的位址五種表達方式

&a[i][j]

a[i]+j

*(a+i)+j

&a[0][0]+4*i+j

a[0]+4*i+j

*(&a[i][j])

*(a[i]+j)

*(*(a+i)+j)

*(&a[0][0]+4*i+j)

*(a[0]+4*i+j)

(*(a+i))[j]

【例子1】

int *p[3],a[3][2],j,i;

for(i = 0;i<3;i++)

p[i] = a[i];

p[0]代表a數陣列每行的開頭

陣列的引用

建立乙個行指標應用二維陣列元素

int a[3][2],(*p)[2];//(*p)[2]為行指標表示指標變數p只能被賦予二維陣列的陣列名

p = a;

p+1==a+1

double s[5][3];

fun(s)/*fun(double (*a)[3])

fun(double a[3])

fun(double a[5][3])

*/

double s[5][3],*ps[5];

fun(ps);

//fun(double *a[5])

fun(double *a)

fun(double **a)

【例子1】

int c[4][5];

cp = c;

為c陣列元素*(*cp+2)//cp為c[0]首位址,再加2為c[0][2]的位址,再加乙個為裡的元素

cp+1為位址

*(cp+3)為c[3]的首位址

計算機二級課程記錄(2)

includemain 字母 下劃線 字母下劃線開頭 數字非關鍵字 大小寫數值型常量 二進位制 0 11 八進位制 00 015 十六進製制 0x0 0x111無符號型別 unsigned short 2位元組 unsigned 4位元組 unsigned long 4位元組 有符號型別 signe...

計算機二級課程記錄(10)

1.字元常量 單引號 2.字串常量 雙引號 必須有 0 例子1 char mark 10 正確 char mark 10 mark abc 錯誤 char psl china 無名儲存區,psl指向字串第乙個字元c char str china ps2 str 正確 char ps1 psl chi...

計算機二級課程記錄(11)

給變數分配確定的儲存單元,並不分配儲存空間 作用域分類 區域性變數 函式內部,也稱內部變數,函式形參屬於區域性變數 全域性變數從定義到程式結束為止 全域性變數 函式外部定義,外部變數 全域性變數與區域性變數衝突時,優先區域性變數 儲存型別分類 自動,區域性變數可以為自動和靜態 靜態,全域性變數只能為...