二、指標陣列與陣列指標
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元素的陣列。其實這兩種寫法主要是因為運算子的優先...