int指的是陣列元素的型別,而不是陣列的型別
定義陣列型別
c語言中通過typedef為陣列型別重新命名
typedef type(name)[size];
陣列型別:
typedef int(aint5)[5];
typedef float(afloat10)[10];
陣列定義:
aint5 iarray; //aint5
代表乙個陣列型別,這個陣列有5個元素,每個元素型別是int型
afloat10 farray; //afloat10
代表乙個陣列型別,這個陣列有10個元素,每個元素型別是float型
陣列指標
首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是「指向陣列的指標」的簡稱。
陣列名是陣列手元素的起始位址,但並不是陣列的起始位址
通過將取位址符&作用域陣列名可以得到陣列的起始位址
可通過陣列型別定義陣列指標:arraytype* pointer
也可直接定義:type(*pointer)[n];
.pointer為陣列指標變數名
.type為指向的陣列的型別
.n為指向的數字的大小
int (*p2)[10];
()的優先順序比高,*號和p2 構成乙個指標的定義,指標變數名為p2 ,int 修飾的是陣列的內容,即陣列的每個元素。陣列在這裡並沒有名字,是個匿名陣列。那現在我們清楚p2 是乙個指標,它指向乙個包含10 個int 型別資料的陣列,即陣列指標,如下圖
例1:typedef int(aint5)[5];
typedef float(afloat10)[10];
typedef char(achar9)[9];
int main()
for(i=0; i<10; i++)
printf("%0x, %0x, %0x\n", &carray, pc+1, pcw+1);
// pc+1 <=> (unsigned int)pc + 1*sizeof(*pc),指向這個陣列9個元素後面
// pcw+1 <=> (unsigned int)pcw + 1*sizeof(*pcw),雖然賦值是個char*,但指向這個陣列4個元素後面
}指標陣列
首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是「儲存指標的陣列」的簡稱
指標陣列是乙個普通的陣列
指標陣列中每個元素為乙個指標
陣列指標的定義:type* aarray[n];
type* 為陣列中每個元素的型別
parray為陣列名
n為陣列大小
的優先順序比*要高。p1 先與結合,構成乙個陣列的定義,陣列名為p1 ,int *修飾的是陣列的內容,即陣列的每個元素。那現在我們清楚,這是乙個陣列,其包含10 個指向int 型別資料的指標,即指標陣列,如下圖
例2:const char* keyword = ; //keyword陣列中每個元素都是char*型別的字元指標
main函式的引數
main函式可以理解為作業系統呼叫的函式
在執行程式的時候可以想main函式傳遞引數
例3:#include
int main(int argc, char* argv)
printf("**********==== end env **********====\n");
} cmd下執行得:
指標陣列和陣列指標
有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向...
指標陣列和陣列指標
理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...
指標陣列和陣列指標
該文時自己對指標陣列用法的一點總結,還望高手指點不足原文如下 由於以前對指標陣列不太明白,所以自己寫了 乙個小的測試程式來驗證了自己的猜測,先總結如下 指標陣列,由名字就可以知道的該陣列中的成員都是為指標的。其定義的方法為 char p 5 該初定義乙個包含5個char 型別的陣列的指標,由於p本身...