陣列與指標

2021-10-05 09:39:10 字數 4491 閱讀 5013

二、指標陣列與陣列指標

int a[3]

=;

[ ]中為含有元素的個數,即為陣列長度(必須大於0),c語言中不允許用變數定義元素數。

[ ]中也可以為空,編譯器會根據初始化列表中的項數來確定陣列的大小。

使用陣列之前,要對陣列進行賦值,若不賦值,編譯器使用的值是記憶體相應位置上的現有值;若初始化列表中的值小於陣列元素個數時,剩餘的元素就會被初始化為零。

#include

intmain()

;for

(i =

0; i <

4; i++

)return0;

}

只賦乙個值

指標提供了一種以符號形式使用位址的方法。指標能更有效的處理陣列。

#include

intmain()

;printf

("sizeof(a) = %d\n"

,sizeof

(a))

;//24

//a單獨放在sizeof內部,a表示整個陣列,所以sizeof(a)計算的是是陣列總大小,單位是位元組

return0;

}

//如果a是乙個陣列

a == &a[0]; //陣列名是該陣列首元素的位址

#include

intmain()

return0;

}

第二行列印的是兩個陣列開始的位址,下一行列印的是指標加一後的位址。

在系統中,位址按位元組編址,int型別占用4位元組,double型別占用8位元組。指標加1指的是增加乙個儲存單元。對陣列而言意味著加1後的位址是下乙個元素的位址,而不是下乙個位元組的位址。指標加1,指標的值遞增它所指向的型別的大小。

p + 2 == &data1[2];

*(p + 2) == data1[2];

在指標前使用*運算子可以得到該指標所指向的物件的值。

注意

*(p + 2) //data1第3個元素的值

*p + 2 //p第乙個元素的值加2

(*)優先順序高於+,所以 *p + 2 相當於(*p)+2

#include

intsum

(int

*a,int n)

return total;

}int

main()

;printf

("%d\n"

,sum

(a,4))

;//10

return0;

}

int b[2]

[3]=

,};//int b[3] = , };//可以

二維陣列中,不可以省略右邊[ ]裡的值。初始化時可以省略內部的花括號,但如果初始化的數值不夠,則按照先後順序逐行初始化,直到用完所有值,後面未初始化的值被統一初始化為0。

指標陣列->指標的陣列,可以看出指標陣列的本質是陣列

定義為char * p[10]

其中p先與結合,構成乙個陣列的定義,char *修飾的是陣列的每個元素。

char

* p [4]

=;//相當於定義 char * p[0] = "red", char * p[1] = "blue", char * p[2] = "green", char * p[3] = "grey"

p[4]為定義的指標陣列,它有四個元素,四個元素是char *型別的指標,分別存放著指向四個字串的首指標。

p[4]是乙個陣列,它裡面存放了四個指標變數,乙個指標變數的大小是8個位元組(64位作業系統下),所以這個p的大小是32個位元組。

#include

intmain()

#include

intmain()

;for

(i =

0; i <

sizeof

(p)/

sizeof

(*p)

; i++

)return0;

}

char ** q	//是二級指標

char *p[n];//是指標陣列

p == &p[0]; // 因為p[0]本身是char *型別

char ** q = p;

#include

intmain()

;char

** q = p;

for(i =

0; i <

sizeof

(p)/

sizeof

(*p)

; i++

)return0;

}

陣列指標->陣列的指標,可見陣列指標的本質是乙個指標。

定義int (*p)[n]int [n] *p

其中,()的優先順序高於*和p構成乙個指標定義,指標的型別為int [n]

#include

void

display

(int

(* p)[4

],int n)

;int

main()

;display

( p,3)

;return0;

}void

display

(int

(*p)[4

],int n)

printf

("\n");

}return

;

指標與陣列,指標陣列 陣列指標

int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...

指標陣列與陣列指標

1.指標陣列 指標陣列中每乙個元素都是乙個指標,也既是存放字串的首位址。所以指標陣列適合處理若干個長度不等的字串。定義的一般形式為 型別說明符 指標陣列名 陣列長度 例如 int p 3 宣告乙個陣列,指標陣列p,由3個int型別指標變數元素組成 從運算子的優先順序分析,由於 的優先順序大於 所以p...

指標陣列與陣列指標

呵呵,實在是厭倦了繞口的解釋。指標陣列,故名思義,就是指標的陣列,陣列的元素是指標 陣列指標,同樣,就是直想陣列的指標。簡單舉例說明 int p 2 首先宣告了乙個陣列,陣列的元素是int型的指標。int p 2 宣告了乙個指標,指向了乙個有兩個int元素的陣列。其實這兩種寫法主要是因為運算子的優先...