從元素型別的角度看,陣列是相同型別的變數的有序集合;
從記憶體的角度看,陣列是連續的一大片記憶體空間
陣列的初始化比較簡單,這裡就不詳細贅述了,現在就總結幾個注意點。
陣列首元素的位址和陣列位址是兩個不同的概念。
陣列名代表陣列首元素的位址,它是乙個常量。
陣列首元素的位址和陣列的位址是相等的。
c語言規定
int a[10]
;printf
("%d"
,a);
//獲取陣列首元素的位址
printf
("%d"
,&a)
;//獲取整個陣列的首位址
接下來總結三個重要的概念
陣列型別
我們知道,陣列也是一種資料型別。
陣列的型別是由元素的型別和陣列的大小共同決定的。
例如:int a[5] 的型別為int [5];
#include
#include
#include
intmain
(void
)for
(i =
0; i <
5; i++
)system
("pause");
return0;
}
陣列指標型別
陣列指標,顧名思義,它是乙個指標,它指向乙個陣列型別變數。
定義陣列指標,有三種方法:
1、通過陣列資料型別定義陣列指標
typedef
int(array)[5
];//定義乙個陣列資料型別
array *p;
//用這個陣列資料型別定義乙個指標變數
2、宣告乙個陣列指標型別
typedef
int(
*array)[5
];//定義乙個陣列指標型別
array p;
//定義乙個陣列指標型別變數
3、直接定義
int
(*p)[10
];
看這個例子
#include
#include
#include
//陣列指標型別
intmain
(void
) for (i = 0; i < 5; i++)
*/// 2
int a[5]
;int
(*p)[5
]=&a;int i;
for(i =
0; i <
5; i++
)for
(i =
0; i <
5; i++
)system
("pause");
return0;
}
陣列指標型別變數
這個很好理解,就不在贅述了。
#include
#include
#include
//陣列型別
intmain1
(void
)for
(i =
0; i <
5; i++
)system
("pause");
return0;
}//陣列指標型別
intmain2
(void
) for (i = 0; i < 5; i++)
*/// 2
int a[5]
;int
(*p)[5
]=&a;int i;
for(i =
0; i <
5; i++
)for
(i =
0; i <
5; i++
)system
("pause");
return0;
}//多維陣列本質
intmain
(void)}
for(i =
0; i <
3; i++
)printf
("\n");
}int
(*p)[5
]= a;
for(i =
0; i <
3; i++
)printf
("\n");
}system
("pause");
return0;
}
多維陣列名的本質是乙個陣列指標
(a+i) 代表整個第i行的位址 二級指標
*(a+i) 代表第i行首元素的位址 一級指標
*(a+i)
+ j ==
=>
& a[i]
[j]*(*
(a+i)
+ j)===
> a[i]
[j]元素 的 值
a[i]
[j]<=
==>*(
*(a+i)
+ j)
a[i]===
> a[
0+i]
==>
*(a+i)
; a[i]
[j]==
= a[
0+i]
[j]==
>
*(a+i)
[j]==
=>
*(a+i)[0
+ j]
==>*(
*(a+i)
+ j)
陣列就簡單的總結到這裡。 c語言複習 陣列
注 本文是蘇小紅版c語言程式設計第8章的筆記 定義陣列時不可以用變數定義陣列的大小 int score 5 int score static int score 5 static int score 5 陣列第二維的長度宣告永遠都不能省略,因為c中二維陣列的元素是按行存放的 即現存第一行,再存第二行...
C語言複習 陣列
1陣列 1.1 一維陣列的初始化 陣列包括 陣列的建立 在建立陣列時,必須定義陣列的大小和型別,陣列的大小不能為零,陣列中元素型別都是相同的。例 int arr 10 內必須是常量陣列的初始化 例 int arr1 3 int arr2 在這裡,我們arr 3 裡邊的數字可以不用寫 int arr3...
C語言複習陣列
陣列的初始化 當賦值的元素少於陣列總體元素的時候,剩餘的元素自動初始化為 0 對於short int long,就是整數 0 對於char,就是字元 0 對於float double,就是小數 0.0。沒賦值的都為0 根據 ascii 碼表,字元 0 的編碼值就是 0。下面的形式將陣列的所有元素初始...