数组、对象数组、指针、动态内存分配、vector对象、string类

数组的存储与初始化

一维数组的存储

数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应着逻辑次序上的相邻。

例如:

一维数组的初始化

在定义数组时给出数组元素的初始值。

  • 列出全部元素的初始值

    static int a[10]={
         0,1,2,3,4,5,6,7,8,9};
    
  • 可以只给一部分元素赋初值

    static int a[10]={
         0,1,2,3,4};
    
  • 在对全部数组元素赋初值时,可以不指定数组长度

    static int a[]={
         0,1,2,3,4,5,6,7,8,9};
    

二维数组的存储

  • 按行存放,如:

    float a[3][4];
    

    可以理解为:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JqCLiPKA-1594979262981)(C:\Users\qbzxb\AppData\Roaming\Typora\typora-user-images\image-20200715190630718.png)]

其中数组a的存储顺序为:a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23

二维数组的初始化

  • 将所有初值写在一个{}内,按顺序初始化

    static int a[3][4]={
         1,2,3,4,5,6,7,8,9,10,11,12};
    
  • 分行列出二维数组元素的初值

    static int a[3][4]={
         {
         1,2,3,4},{
         5,6,7,8},{
         9,10,11,12}};
    
  • 可以只对部分元素初始化

    static int a[3][4]={
         {
         1},{
         0,6},{
         0,0,11}};
    
  • 列出全部初始值时,第1维下标个数可以省略

    static int a[][4]={
         1,2,3,4,5,6,7,8,9,10,11,12};
    // 或者
    static int a[][4]={
         {
         1,2,3,4},{
         5,6,7,8},{
         9,10,11,12}};
    

注意:

  • 如果不作任何初始化,块作用域中的局部数组中会存在垃圾数据,static数组中的数据默认初始化为0;
  • 如果只对部分元素初始化,剩下的未显式初始化的元素,将自动被初始化为零;

数组作为函数的参数

  • 数组元素做实参,与单个变量一样。
  • 数组名作参数,形、实参都应是数组名,类型要一样,传递的是数组的首地址。对形参数组的改变,会直接影响到是实参数组。

注意:数组作为形参时弱化成为指针

示例:使用数组名组函数参数

#include <iostream>
using namespace std;

void rowSum(int a[][4],int nRow){
   
    for(int i=0;i < nRow;i++){
   
        for(int j = 1;j < 4;j++)
            a[i][0] += a[i][j];
    }
}

int main(){
   
    int table[3][4] = {
   {
   1,2,3,4},{
   2,3,4,5},{
   3,4,5,6}};
    
    // 输出数组元素
    for(int i = 0;i < 3;i++){
   
        for(int j = 0;j < 4;j++)
            cout << table[i][j] << "	";
        cout << endl;
    }
    rowSum(table,3);  // 调用子函数,计算各行和
    // 输出计算结果
    for(int i = 0; i < 3; i++)
        cout << "Sum of row " << i << table[i][0] << endl;
    return 0;
}

对象数组

对象数组的定义和访问

  • 定义对象数组

    类名 数组名[元素个数]
  • 访问对象数组元素——通过下标访问

    数组名[下标].成员名
    

对象数组的初始化

  • 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。

  • 通过初始化列表赋值。

    Point a[2]={
         Point(1,2),Point(3,4)};
    
  • 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)。

数组元素所属类的构造函数

    <
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值