栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++入门到精通。(十二、C++的多维数组和C++指向数组的指针)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++入门到精通。(十二、C++的多维数组和C++指向数组的指针)


目录
    • 一、C++的二维数组
    • 二、初始化二维数组
    • 三、二维数组的访问
    • 四、C++指向数组的指针

一、C++的二维数组

多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:

type arrayName [ x ][ y ];

其中,type 可以是任意有效的 C++ 数据类型,arrayName 是一个有效的 C++ 标识符。

二、初始化二维数组

多维数组可以通过在括号内为每行指定值来进行初始化。下面是一个带有 3 行 4 列的数组。

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

等同于:

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
三、二维数组的访问

二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。

#include 
using namespace std;

int main ()
{
  int a[3][4] = {
      {0, 1, 2, 3} ,   
      {4, 5, 6, 7} ,   
      {8, 9, 10, 11}   
  };
  for ( int i = 0; i < 3; i++ ) {
    for (int j = 0; j < 4; j++) {
      cout << "a[" << i << "][" << j << "]: ";
      cout << a[i][j] << "    ";
    }
    cout << endl;
  }
  return 0;
}

输出:

a[0][0]: 0    a[0][1]: 1    a[0][2]: 2    a[0][3]: 3
a[1][0]: 4    a[1][1]: 5    a[1][2]: 6    a[1][3]: 7
a[2][0]: 8    a[2][1]: 9    a[2][2]: 10    a[2][3]: 11
四、C++指向数组的指针

数组名是指向数组中第一个元素的常量指针。
因此,在下面的声明中:

ouble runoobAarray[50];

runoobAarray 是一个指向 &runoobAarray[0] 的指针,即数组 runoobAarray 的第一个元素的地址。因此,下面的程序片段把 p 赋值为 runoobAarray 的第一个元素的地址:

double *p;
double runoobAarray[10];

p = runoobAarray;

使用数组名作为常量指针是合法的,反之亦然。因此,*(runoobAarray + 4) 是一种访问 runoobAarray[4] 数据的合法方式。

一旦您把第一个元素的地址存储在 p 中,您就可以使用 p、(p+1)、*(p+2) 等来访问数组元素。下面的实例演示了上面讨论到的这些概念:

#include 
using namespace std;
 
int main ()
{
   // 带有 5 个元素的双精度浮点型数组
   double runoobAarray[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
   double *p;
 
   p = runoobAarray;
 
   // 输出数组中每个元素的值
   cout << "使用指针的数组值 " << endl; 
   for ( int i = 0; i < 5; i++ )
   {
       cout << "*(p + " << i << ") : ";
       cout << *(p + i) << endl;
   }
 
   cout << "使用 runoobAarray 作为地址的数组值 " << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "*(runoobAarray + " << i << ") : ";
       cout << *(runoobAarray + i) << endl;
   }
 
   return 0;
}

输出:

使用指针的数组值
*(p + 0) : 1000
*(p + 1) : 2
*(p + 2) : 3.4
*(p + 3) : 17
*(p + 4) : 50
使用 runoobAarray 作为地址的数组值
*(runoobAarray + 0) : 1000
*(runoobAarray + 1) : 2
*(runoobAarray + 2) : 3.4
*(runoobAarray + 3) : 17
*(runoobAarray + 4) : 50
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号