C++基础入门详细教程-5数组

目录

5数组

5.1概述

5.2一维数组

5.2.1一维数组定义方式

5.2.2一维数组数组名

5.2.3冒泡排序

5.3二维数组

5.3.1二维数组定义方式

5.3.2二维数组数组名


5数组

5.1概述

所谓数据,就是一个集合,里面存放了相同类型的数据元素;

特点1:数组中的每个数据元素都是相同的数据类型

特点2:数组是由连续的内存位置组成的;

5.2一维数组

5.2.1一维数组定义方式

一维数组定义的三种方式:

1.数据类型 数组名[数组长度];

2.数据类型 数组名[数组长度]={值1,值2......};

3.数据类型 数组名[]={值1,值2......};

示例:

int main(){
    //定义方式
    //数据类型 数组名[元素个数];
    int score[18];

    //利用下标赋值
    score[0]=100;
    score[1]=99;
    score[2]=98;


    //利用下标输出
    cout<<score[0]<<endl;
    cout<<score[1]<<endl;
    cout<<score[2]<<endl;

    //第二种定义方式
    //数据类型 数组名[元素个数]={值1,值2,值3...};
    //如果{}内不足10个数据,剩余数据用0补全
    int score2[10]={100,99,98,97,80,70};

    //逐个输出
    cout<<score2[0]<<endl;
    cout<<score2[1]<<endl;
    cout<<score2[2]<<endl;

    //一个一个输出很麻烦,因此循环输出
    for(int i=0,i<10,i++){
        cout<<score2[i]<<endl;
    }
    
    //定义方式3
    //数据类型 数组名[]={值1,值2,值3...};
    int score3[]={100,99,98,97,80,70};

    for(int i=0,i<10,i++){
        cout<<score3[i]<<endl;
    }

    system("pause");

    return 0;
}

总结:数组名的命名规范与变量名命名规范一致,不要和变量名重名;

数组中下标是从0开始索引

5.2.2一维数组数组名

一维数组名称的用途:

1可以统计整个数组在内存中的长度

2可以获取数组在内存中的首地址

示例:

int main(){
    //数组名用途
    //1可以统计整个数组在内存中的长度
    int arr[10]={1,2,3,4,5,6,7,8,9,10};

    cout<<"整个数组所占内存空间为:"<<sizeof(arr)<<<endl;
    cout<<"每个元素所占内存空间为:"<<sizeof(arr[0])<<endl;
    cout<<"数组的元素个数为:"<<sizeof(arr)/sizeof(arr[0])<<endl;

    //2可以获取数组在内存中的首地址
    cout<<"数组首地址为:"<<(int)arr<<endl;
    cout<<"数组中第一个元素地址为:"+(int)&arr[0]<<endl;
    cout<<"数组中第二个元素地址为:"+(int)&arr[1]<<endl;

    //arr-100;错误,数组名是常量,因此不可以赋值;
    system("pause");

    return 0;
}

5.2.3冒泡排序

最常用的排序算法,对数组内元素进行排序

1比较相邻的元素,如果第一个比第二大,就交换两个。

2对每一对相对元素做同样的工作,执行完毕候,找到第一个最大值。

3重复以上的步骤,每次比较次数-1,直到不需要比较

示例:

int main(){
    int arr[0]={4,2,8,0,5,7,1,3,0};
    for(int i=0;i<9-1;i++){
        for(int j=0;j<9-1-i;j++){
            if(arr[j]>arr[j+1]){
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
}

5.3二维数组

5.3.1二维数组定义方式

二维数组定义的四种方式:

1.数据类型 数组名[行数][列数];

2.数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};

3.数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4};

4.数据类型 数组名[][列数]={数据1,数据2,数据3,数据4};

建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性

示例:

int main(){
    //方式1
    //数组类型 数组名[行数][列数]
    int arr[2][3];
    arr[0][0]=1;
    arr[0][1]=2;
    arr[0][2]=3;
    arr[1][0]=4;
    arr[1][1]=5;
    arr[1][2]=6;

    for(int i=0;i<2;i++){
        for(int j=0;j<3;j++){
            cout<<arr[i][j]<<" ";
        }
        cout<<endl;
    }

    //方式2
    //数组类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};
    int arr2[2][3]=
    {
        {1,2,3},
        {4,5,6}
    };

    //方式3
    //数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4};
    int arr3[2][3]={1,2,3,4,5,6};

    //方式4
    //数据类型 数组名[][列数]={数据1,数据2,数据3,数据4};
    int arr4[][3]={1,2,3,4,5,6};

    system("pause");

    return 0;

}

总结:在定义二维数组时,如果初始化了数据,可以省略行数;

5.3.2二维数组数组名

查看二维数组所占内存空间

获取二维数组首地址

示例:

int main(){
    //二维数组数组名
    int arr[2][3]=
    {
        {1,2,3},
        {4,5,6}
    };

    cout<<"二维数组大小:"<<sizeof(arr)<<endl;
    cout<<"二维数组一行大小:"<<sizeof(arr[0])<<endl;
    cout<<"二维数组元素大小:"<<sizeof(arr[0][0])<<endl;

    cout<<"二维数组行数:"<<sizeof(arr)/sizeof(arr[0])<<endl;
    cout<<"二维数组列数:"<<sizeof(arr[0])/sizeof(arr[0][0])<<endl;

    //地址
    cout<<"二维数组首地址:"<<arr<<endl;
    cout<<"二维数组第一行地址:"<<arr[0]<<endl;
    cout<<"二维数组第二行地址:"<<arr[1]<<endl;

    cout<<"二维数组第一个元素地址:"<<&arr[0][0]<<endl;
    cout<<"二维数组第二个元素地址:"<<&arr[0][1]<<endl;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vipers_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值