【C語言學習】國嵌22__數組基礎

一、數組的概念數組

數組是相同類型的變量的有序集合spa

int a[5];指針

數組包含5個int類型的數據code

a表明數組第一個元素的起始地址,這20個字節的名字爲a。a[0], a[1]等都是a中的元素,並不是元素的名字,數組中的元素沒有名字。每一個元素都是int型數據。orm

二、數組的大小內存

# 數組在一片連續的內存空間中存儲元素編譯器

# 數組元素的個數能夠顯式或隱式指定string

#include <stdio.h>
#include <string.h>

int main()
{
int a[5] = {1, 2}; //剩餘的三個元素,編譯器會初始化爲0,這是編譯器的行爲 
int c[5];
int d[5] = {0}; //這裏對數組進行了初始化,巧妙的運用了編譯器特性,
//它會自動對未定義數組元素初始化爲0 
int b[] = {1, 2};
int i;
  //memset(c, 0, sizeof(c)); //這個不是初始化,是對數組賦值 

printf("%d, %d \n", sizeof a, sizeof a/sizeof *a);
printf("%0x, %0x \n", a, &a);

printf("%d, %d \n", sizeof b, sizeof b/sizeof *b);

for(i = 0; i < 5; i++)
{
printf("%d\n", a[i]);
}

for(i = 0; i < 5; i++)
{
printf("%d\n", c[i]);
}

for(i = 0; i < 5; i++)
{
printf("%d\n", d[i]);
}
return 0;
}

運行結果:it

20, 5
22ff38, 22ff38
8, 2
1
2
0
0
0
2008950864
-1
2009091625
2009091650
4200820
0
0
0
0
0io

三、數組地址與數組名

# 數組名錶明數組首元素的地址

# 數組的地址須要用取地址符&才能獲得

# 數組首元素的地址值與數組的地址值相同

# 數組首元素的地址與數組的地址是兩個不一樣的概念

你家所在的樓房和你家的GPS地址相同,但意義不一樣。

四、數組名的盲點

# 數組名能夠看作一個常量指針

# 數組名「指向」的是內存中數組首元素的起始位置

# 在表達式中數組名只能做爲右值使用

# 只有在下面場合中數組名不能看作常量指針

一、數組名做爲sizeof操做數的參數時,它表明整個數組,而非首元素的常量指針

二、數組名做爲&的參數,它表明整個數組,因此&a(a爲一個數組)表示數組地址。

數組小結

# 數組是一片連續的內存空間

# 數組的地址和數組首元素的地址意義不一樣

# 數組名在大多數狀況下被當成常量指針處理

# 數組名其實並非指針,在外部聲明時不能混淆

相關文章
相關標籤/搜索