陣列和指標 陣列

2021-10-14 16:42:07 字數 2293 閱讀 3460

陣列由資料型別相同的一系列元素組成。需要使用陣列時,通過宣告陣列告訴編譯器陣列中內含多少元素和這些元素的型別。編譯器根據這些資訊正確地建立陣列。普通變數可以使用的型別,陣列元素都可以用。考慮下面的陣列宣告:

/* 一些陣列宣告 */

intmain

(void

)

若要訪問陣列中的元素,通過使用陣列下標數(也叫做索引)表示陣列中的各個元素

#include

"stdio.h"

#define months 12

intmain()

;int index;

for(index=

0;index)printf

("\n month %2d has %2d days."

,index+

1,days[index]);

return

520;

}

當然這個程式還不夠完善,它所表示的只是平年每個月的天數,至於程式的完善希望讀者可以拿來練手這種初始化方法。

#include

"stdio.h"

#define months 12

intmain()

//初始化完成

for(index=

0;index)printf

("\n month %2d has %2d days."

,index+

1,days[index]);

return

520;

}

當然這個程式中也會有許多小瑕疵,比如使用者輸入的內容萬一不是整數型別怎麼辦,這時請大家看我的另一篇文章,講述如何實現scanf的優化。

c99增加了乙個新特性:指定初始化器( designated initializer)。 利用該特性可以初始化指定的陣列元素。例如,只初始化陣列中的最後乙個元素。對於傳統的c初始化語法,必須初始化最後乙個元素之前的所有元素,才能初始化它:

int arr[6]

=;// 傳統的語法

而c99規定,可以在初始化列表中使用帶方括號的下標指明待初始化的元素:

int arr[6]

=;//把arr[5]初始化為212

對於一般的初始化,在初始化-乙個元素後,未初始化的元素都會被設定為0。

**例項:

#include

#define months 12

intmain()

;int i;

for(i=

0;i)printf

("\n %2d %d"

,i+1

,days[i]);

return0;

}

該程式在支援c99編譯器中輸出如下:

1 31

2 28

3 30

4 05 31

6 07 0

8 09 0

10 0

11 0

12 0

這裡我們著重看幾個常見的錯誤賦值

#define size 5

intmain()

;/*初始化沒問題*/

int yaks[size]

; yaks=oxen;

/*不允許*/

yaks[size]

=oxen[size]

;/*陣列下標越界*/

yaks[size]=;

/*不起作用*/

}

這些錯誤是因為c不允許把陣列作為乙個單元賦給另乙個陣列,除初始化以外也不允許使用花括號列表的形式賦值。

int n=5;

int m=8;

float al[5]

;//可以

float a2[5*

2+1]

//可以

float a3[

sizeof

(int)+

1];//可以

float a4[-4

]//不可以 陣列大小必須大於0

float a5[0]

;//不可以

float a6[

2.5]

;//不可以

float a7[

(int

)2.5

]//可以

float a8[n]

;//c99之前不允許;

過兩天來更新多維陣列的知識總結。

陣列指標和指標陣列

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...

陣列指標和指標陣列

一 定義 陣列指標 陣列指標 是指向陣列 首元素的位址的 指標,其本質為指標 這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動 指標陣列 陣列元素為指標的陣列,其本質為陣列。二 舉例 int a 3 4 這個無需多說,就是乙個 二維陣列 int p 4 就相當於int p 4 它就...

陣列指標和指標陣列

這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...