后台开发:核心技术与应用实践1.3 数组

    xiaoxiao2024-03-16  117

    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。

    相关资源:后台开发:核心技术与应用实践.徐晓鑫(带详细书签)
    最新回复(0)