有關數組(一維數組)

數組的定義(一維數組): (類型名  數組名[數組元素個數]  =  {} )數組

定義一個數組須要給定數組的類型,以及數組所包含元素的個數,如: int ar[10] = {};在定義數組時若不對數組進行初始化,裏面爲隨機值,且在後面對數組進行賦值不能總體的進行spa

如:  ar[10] = {1,2,3,4,5,6,7,8,9,10}(error) , 這種寫法是錯誤的,只能經過訪問數組內的每個元素對其進行賦值:如經過循環:指針

int ar[] = {1,2,3,4,5,6};//定義一個已初始化且包含六個整型元素的數組ar.
//int ar[] = {};error

int br[10];//定義一個未初始化的包含十個整型元素的數組br.
for
(int i = 0 ; i < 10; i++) //利用循環對br進行賦值 { br[i] = i+1; }

對數組進行賦值.code

定義數組若未給定元素個數,則須要在{}內填入數據,不然將報錯:如:int ar[] ;(error),正確寫法應爲 int ar[] = {1,2,3};blog

 

數組的元素的個數:編譯

數組元素的個數能夠經過(sizeof(ar)/sizeof(ar[0]))計算獲得.其中sizeof(ar)爲整個數組的大小,sizeof(ar[0])指的是數組元素類型的大小.class

 例:變量

int main()
{
    int ar[] = { 1,2,2,2,2,2,2,23,2,3,2,1, };
    int size = 0;
    printf("ar size = %d", sizeof(ar) / sizeof(ar[0]));
    return 0;
}

運行結果:
循環

 

數組的訪問:im

下標訪問: ar[i]    (下標訪問時中括號外面的變量有多是數組名,也有可能爲指針   =>    i[ar])

基地址訪問: *(ar + i),   i[ar]=>*(i+ar)

其中下標訪問在編譯連接過程會轉化爲指針訪問 即基地址訪問.

 

數組名:

除了在sizeof(ar) 以及 定義一個指向數組的指針int (*p)[2] = &ar 表明整個數組,在其餘狀況下,數組名會退化成,指向數組首元素的地址的指針.此時沒法對數組名進行加一以及賦值操做.

即此時數組名ar 做爲數組首元素地址時是一個指針常量沒法進行ar++或ar = ar+1等操做!

相關文章
相關標籤/搜索