int a[10]
;//中的值只能是常量或常量表示式,不能是變數
//四種一維陣列初始化
int b[5]
=;int c[5]
=;//只為c[0],c[1]賦值,剩下的陣列元素值預設為0
int d[5]
=;//陣列中所有元素都為0
int e=
;//系統預設e陣列中有5個元素
int a[10]=;
int *p;
//取a陣列首位址
p=&a[0];
p=a;//也可以
//指標的加減
考試經常像下面這樣考
若想要a[0]數值加1,即++a[0],可以用++*p實現
若是a[0]++,則要用(*p)++實現,因為++運算子優先順序比取值運算子「*」高
p=&a[0];則*(p+i)就是a[i]
int a[4]
[7];
//同樣必須是常量或常量表示式
//四種二維陣列初始化情況
int b[2]
[3]=
,};int c[2]
[3]=
;int d[2]
[3]=
,};//給特定值賦值,d[0][0]=1,d[1][0]=2,其餘都為0
int e[2]
[3]=
,};//同上,d[0][0]=1,d[1][1]=2
int f[
3]=;
//這種情況可省略行數,會預設為2行
a是二維陣列陣列名,同時a也代表指向a[0]的乙個二級指標,所代表的位址值與a[0]相同
a[0]等價於*a,是0行0列元素的位址
a[1]等價於*(a+1),是1行0列元素的位址
&a[1]等價於a+1,是1行起始位址,當然這個位址也是上面的1行0列元素的位址
&a[1][2]等價於a[1]+2,等價於*(a+1)+2,是1行2列元素的位址
a[1][2]等價於*(a[1]+2),*(*(a+1)+2),是1行2列元素的值
說了那麼多,總結一下就是a是乙個二級指標,指向a[0]。而a[0]是乙個一級指標,指向二維陣列的0行。
所以他們值是一樣的。
char a=
;char b=
"hhh hhh"
;//這樣初始化的陣列最後乙個元素是'\0',作為字串的結束符
char c=
;//也可以這樣
char d=
;//但一般我們自己也會手動加上'\0'
printf
("%s\n"
,d);
//字串用%s,當然你也可以用%c迴圈輸出
//考試經常問字元陣列長度多少,注意有沒有'\0'即可
char s=「abcdrfg」;
則s[0]等價於*s
s[2]等價於*(s+2)
陣列(一維陣列 二維陣列)
陣列概述 c 陣列從零開始建立索引,即陣列索引從零開始。c 中陣列的工作方式與在大多數其他流行語言中的工作方式類似。但還有一些差異應引起注意。這些其實和泛型有些類似,陣列的操作沒有泛型方便,但是效能卻不是泛型所能比擬的 宣告陣列時,方括號 必須跟在型別後面,而不是識別符號後面。在c 中,將方括號放在...
c 一維陣列,二維陣列,多維陣列。
陣列就是給乙個變數定義多個字元,可以是string也可以是int。或者說是一組變數。可以更加方便的操作大量資料。陣列的定義 1 陣列裡面的內容必須是同一型別 2 資料必須有長度限制 一維陣列 一 資料型別 變數名 new 資料型別 長度 陣列定義 string a new string 這裡寫陣列包...
C 二維陣列還是一維陣列?
記得剛學習c 那會這個問題曾困擾過我,後來慢慢形成了不管什麼時候都用一維陣列的習慣,再後來知道了在一維陣列中提出首列元素位址進行二維呼叫的辦法。可從來沒有細想過這個問題,最近自己寫了點 測試下,雖然還是有些不明就裡,不過結果挺有意思。為了避免編譯器優化過度,用的是寫操作,int,測試分為不同大小的空...