指標和陣列一致的情況及二維陣列初始化

2021-06-18 22:40:42 字數 1234 閱讀 7814

參見《c專家程式設計》第9章

1.做為形參,二者可以換用,形參是指函式宣告或者定義時的引數。

int *a;

int a;

2.陣列屬於傳址呼叫,不同傳值呼叫,它傳的只是指標,這是出於效能的考慮

例項func(int *a);

func(int a);

func(int a[200]);

//上面作為形參,都看作傳遞指向int陣列的第乙個元素的指標。三種形式完全相同

int my_int;

int *my_int_ptr;

int my_int_array[10];

呼叫時的實參

型別通常目的

func(&my_int)

int型位址

int引數的傳址呼叫

func(my_int_ptr)

指向整數的指標

傳遞乙個指標

func(my_int_array)

整數陣列

傳遞乙個陣列

func(&my_int_array[i])

整型陣列元素的位址

傳遞陣列的一部分

總結a[i]總是被改寫為*(a+1)

指標不可改寫成陣列,可以用下表訪問指標,一般是指標作為函式引數,而且實際傳遞的是乙個陣列

只有作為函式引數時,乙個陣列的宣告可以看成乙個指標,作為函式引數的陣列總會被編譯器修改為指向第一元素的指標

陣列定義為函式引數時,可採用陣列和指標的形式,實際得到的是個指標

其他情況定義和宣告必須匹配

c語言沒有多維陣列,只有陣列的陣列,儘管術語上稱「多維陣列」,但c實際上只支援「陣列的陣列」,可以把陣列看作一種向量(即某種物件的一維陣列),而它的元素可以是另一陣列。

多維陣列的布局越在右邊的下標,越是先增長,線性儲存

陣列初始化

int a[3]=;

int b=;//以個數來定陣列長度

int a[2][3]=,

,最後的逗號可省略。

可省略最左邊的下標,編譯器可自動推斷個數

int c[3]=,

,初始化的元素不足,則初始化為0,微觀的看,是所有的位都為零。

char v[9]=;//正確

char *v2=;//正確

int *w=,};錯誤,只能初始化字串

可以這樣初始化

int r1=;

int r2=;

int *w=; 0

給主人留下些什麼吧!~~

二維陣列和陣列指標

二維陣列的基本概念在這裡不在多提,即他的定義和特點。先從二維陣列的輸出來說吧。二維陣列的輸出 int main for int i 0 i 3 i printf n 二維陣列的逆置即本來的 行換成列,列換成行,這個很簡單我們看來看一下 和結果 int main for int i 0 i 3 i p...

二維陣列和陣列指標的關係

昨天既然寫了一些關於陣列指標的話題,那麼今天就寫一些關於陣列指標的話題吧!陣列指標 這樣讀 陣列的指標 即指向陣列的指標,就是陣列指標,其本質就是乙個指標 比如 int a 3 就是乙個陣列指標,運用如下 include include include int main int a 3 3 int ...

二維陣列及指標

乙個陣列的元素值為指標則是指標陣列。指標陣列的所有元素都必須是具有相同儲存型別和指向相同資料型別的指標變數。指標陣列說明的一般形式為 型別說明符 陣列名 陣列長度 其中型別說明符為指標值所指向的變數的型別。例如 int pa 3 表示pa 是乙個指標陣列,它有三個陣列元素,每個元素值都是乙個指標,指...