官术网_书友最值得收藏!

icon2

1.3 數組

1.數組的定義

數組是相同類型數據的集合。引入數組就不需要在程序中定義大量的變量,大大減少程序中變量的數量,使程序精煉,而且數組含義清楚,使用方便,明確地反映了數據間的聯系。許多好的算法都與數組有關。熟練地利用數組,可以大大地提高編程的效率,加強程序的可讀性。例1.5展示了數組的使用方法。

【例1.5】 一維數組與二維數組使用舉例。


#include<iostream>
using namespace std;
int main(){
    int a[10]={1,2,3,4,5,6,7,8,9,10};
                         // 數組a,類型為int整型,有10個元素,是一個一維數組
    int i,j;
    for(i=0;i<10;i++){          // a[0]~a[9]
        cout<<a[i]<<" ";
    }
    cout<<endl;
    int b[2][2]={1,2,3,4};     // 數組b,類型為int,有4 元素,是一個二維數組
    for(i=0;i<2;i++){
        for(j=0;j<2;j++){
            cout<<b[i][j]<<" ";
    }
    cout<<endl;
    }
    return 0;
}

程序的執行結果是:


1 2 3 4 5 6 7 8 9
1 2
3 4

例1.5中數組a是一個一維數組,有一個下標;數組b是一個二維數組,有兩個下標。

一個數組在內存中占用的存儲單元是連續的,也就是說一個數組在內存中占用一片連續的存儲單元。在32位的機器上,一個int類型的值占4Byte,如果a[0]的地址是2000,那么a[1]的地址就是2004,a[2]的地址就是2008,a[3]的地址就是2012……如此類推。這里的“地址”,大家可以簡單理解為在內存中的一個標識,詳細內容會在本章的1.4節中進行介紹。

2.字符數組

字符數組,就是一個用來存放字符數據的數組,示例如下:


char str[10]="Book";

其中,str就是一個字符數組,并且str[0]='B',str[1]='o',str[2]='o',str[3]='k'。C++中用'\0'來標識一個字符串的結束,這里,str[4]~str[9]都是'\0'。通常用strlen()函數來計算一個字符串的長度,故strlen(str)的值是4。與strlen()函數比較容易混淆的是sizeof()函數,這里sizeof(str)的值是10。

strlen與sizeof的區別如下所示:

(1)strlen()是函數,在運行時才能計算。參數必須是字符型指針(char*),且必須是以'\0'結尾的。當數組名作為參數傳入時,實際上數組已經退化為指針了。它的功能是返回字符串的長度。

(2)sizeof()是運算符,而不是一個函數,在編譯時就計算好了,用于計算數據空間的字節數。因此,sizeof不能用來返回動態分配的內存空間的大小。sizeof常用于返回類型和靜態分配的對象、結構或數組所占的空間,返回值跟對象、結構、數組所存儲的內容沒有關系。

當參數分別如下時,sizeof返回的值表示的含義如下所述。

1)數組——編譯時分配的數組空間大小,如:


char a[10]="hello"; 

因為char占1Byte,所以sizeof(a)的值是10*1=10Byte。

2)指針——存儲該指針所用的空間大小,如:


char *str="I am from China."

因為str存儲的是一個字符指針,所以sizeof(str)是指針所占的空間,即是4Byte。

3)類型——該類型所占的空間大小,如:


int b=10;

因為在32位的機器上,int類型占4Byte,所以sizeof(b)的值是4Byte。

4)對象——對象的實際占用空間大小,如:


class Class_Sample{
    int a,b;
    int func();
}Class_a;

兩個int類型的值是8Byte,所以sizeof(Class_a)的值是8Byte。

5)函數——函數的返回類型所占的空間大小,且函數的返回類型不能是void。

主站蜘蛛池模板: 广水市| 大宁县| 武平县| 沂源县| 正镶白旗| 合川市| 顺平县| 大竹县| 中牟县| 县级市| 五台县| 招远市| 泽库县| 赣州市| 筠连县| 衡水市| 新宁县| 始兴县| 青海省| 岑巩县| 桑日县| 滨州市| 灵宝市| 贞丰县| 祁连县| 温宿县| 乌鲁木齐县| 三亚市| 马尔康县| 科技| 黔西| 安西县| 赤城县| 韩城市| 临湘市| 久治县| 抚远县| 万年县| 临潭县| 攀枝花市| 青岛市|