码迷,mamicode.com
首页 > 编程语言 > 详细

多维数组

时间:2020-02-29 13:15:46      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:using   整数   clu   一个   div   amp   style   技术   数组的数组   

 严格来说,C++语言中美有多维数组,通常所说的多维数组其实是数组的数组,记住这一点对于以后了解和使用多维数组大有裨益。

当一个数组的元素仍然是数组时,通常使用两个维度来定义它:一个维度表示数组本身大小,另外一个维度表示其元素(也是数组)大小。

int ia[3][4];//大小为3的数组,每个元素是含有4个整数的数组
int arr[10][20][30];//大小为10的数组,每个元素都是大小为20的数组,这些数组的元素是含有30个整数的数组

 多维数组的初始化

 

int ia[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int ia[3][4]={{0},{4},{8}};//多维数组的每一行用花括号括起来

指针和多维数组

1 int a[][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
2 // a : 代表第0行首地址
3 // a+i -> &a[i] : 代表第i行首地址
4 // *(a+i) -> a[i] : 代表第i行首元素地址
5 // *(a+i)+j -> &a[i][j] : 第i行第j列元素的地址
6 // *(*(a+i)+j) -> a[i][j] : 第i行第j列元素的值

在内存分配时,不管是多少维的数组都是分配连续的地址。但多维数组在逻辑上是分段的,如a[3][4]这样的数组,内存分配上是连续的,所以数组名a是这个多维数组的起始地址。这个多维数组逻辑上分为三个段,每一个段有4个元素(在物理内存中这个都是连续的),a[0]也是指针(a[0],a[1],a[2]都是数组名),表示第一段的首地址,实际上a和a[0]的内容是一样的,同理a+i和a[i]的内容也是一样的,但a和a[0]的意义并不相同,可以理解为a表示第一行数组的地址,a[0]表示第一行数组首元素的地址。

 

 1 #include <iostream> 
 2 using namespace std;
 3 int main()
 4 { 6     int ia[2][3]={{1,2,3},{4,5,6}};
 7     cout<<ia<<" "<<*ia<<" "<<**ia<<endl;
 8     int (*p)[3]=&ia[0];//p是指向整个数组的,并不是首元素地址 
 9     cout<<p<<" "<<ia[0]<<endl;
10     for(int i=0;i<3;i++)
11         cout<<*(*p+i)<<" ";
12     return 0;
13 }

运行结果:

技术图片

 

多维数组

标签:using   整数   clu   一个   div   amp   style   技术   数组的数组   

原文地址:https://www.cnblogs.com/cs0915/p/12382139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!