精华内容
下载资源
问答
  • C++二维数组 | 二维数组输出0-6

    千次阅读 2020-12-01 09:44:12
    C++二维数组 C++的二维数组是指具有两个下标的数组,有些数据要依赖于两个因素才能惟一地确定,因此才会引入二维数组。 C++二维数组的定义 C++中定义二维数组的一般格式: 类型标识符 数组名[常量表达式] [常量...

    C++二维数组

    C++的二维数组是指具有两个下标的数组,有些数据要依赖于两个因素才能惟一地确定,因此才会引入二维数组。

    C++二维数组的定义

    C++中定义二维数组的一般格式:

    类型标识符 数组名[常量表达式] [常量表达式]
    

    例如:

    int array[3][4];
    

    表示数组名为array,类型为整型数组,有3行4列,12个元素。

    在C++中,我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。

    C++中二维数组中元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。

    和C语言一样,C++同样允许使用多维数组,但是开发中很少用到。

    C++二维数组的引用

    上一节一维数组中小林已经讲过,在C++中数组必须先定义,然后才能使用,而且只能逐个引用数组元素的值而不能一次引用整个数组中的全部元素的值。

    二维数组元素的表示形式为

    数组名[下标] [下标]
    

    下标可以是整型表达式,数组元素是左值,可以出现在表达式中,也可以被赋值。

    C++使用数组元素时,应该注意下标值应在已定义的 数组大小的范围内。

    C++二维数组的初始化

    分行给二维数组赋初值:

    int array[2][3]={{1,2,3},{4,5.6}};
    

    可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值:

    int array[2][3]={1,2,3,4,5,6};
    

    可以对部分元素赋初值,它的作用是只对各行第1列的元素赋初值,其余元 素值自动置为0。

    int array[2][3]={{1},{2}};
    

    可以对各行中的某一元素赋初值:

    int array[2][3]={{1},{4,5,6}}
    

    如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定, 但第二维的长度不能省:

    int array[][3]={{1,2,3},{4,5.6}};
    

    C++在定义数组和引用数组元素时采用:数组名[][],这种两个方括号的方式,对数组初始化时十分有 用,它使概念清楚,使用方便不易出错。

    经典案例:C++实现用二数组输出1-6。

    #include<iostream>//预处理
    using namespace std;//命名空间 
    int main()//主函数 
    {
      int array[2][3]={{1,2,3},{4,5,6}};//定义二维数组且赋初值 
      int i,j;//定义整型变量 
      for(i=0;i<2;i++)//外层for循环限制行数 
      {
        for(j=0;j<3;j++)//内层for循环限制列数 
        {
          cout<<array[i][j]<<" ";//输出这个数 
        }
        cout<<endl;//一行结束换行 
      }
      return 0;//函数返回值为0 
    }
    

    执行本程序之后,会输出:

    1 2 3
    4 5 6
    
    --------------------------------
    Process exited after 2.068 seconds with return value 0
    请按任意键继续. . .
    

    C++二维数组输出0-6

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • C++二维数组

    千次阅读 2017-02-07 14:33:52
    C++二维数组_微学苑 具有两个下标的数组称为二维数组。有些数据要依赖于两个因素才能惟一地确定,例如有3个学生,每个学生有4门课的成绩,显然,成绩数据是一个二维表,如书中表5.1所示。 表5.1 学生成绩...

    C++二维数组_微学苑

    展开全文
  • 主要介绍了C++二维数组中的查找算法,结合实例形式分析了C++二维数组进行查找的原理与具体实现技巧,需要的朋友可以参考下
  • C++ 二维数组 在连续的空间中分配二维数组

    在C++11中,定义二维数组的有四种方法,两种固定分配的二维数组和两种动态分配的二维数组。在这里顺便提一下new int[]和new int[]()的区别,在VS中,前一种只分配内存空间,不做初始化,后一种分配空间并同时将元素初始化为0;使用MinGW编译时,都会初始化为0;

    一、固定分配二维数组有两种方式

    1、第一种,常量

    const int M = 100;
    const int N = 200;
    int arr[M][N];
    

    2、第二种,宏定义

    #define M 100
    #define N 200
        
    int arr[M][N];
    

    二、动态分配二维数组有两种方式

    1、第一种,二维数组内的空间不连续

    int M = 100;
    int N = 200;
    int **arr = new int*[M];
    for(int i=0;i<M;i++)
        arr[i] = new int[N];

    释放数组内存代码:

    for(int i=0;i<M;i++)
        delete[] arr[i];
    delete[] arr;
    arr = nullptr;

    2、第二种,二维数组存放在一组连续空间内

    int M = 100;
    int N = 200;
    int **arr = new int*[M];
    int *buffer = new int[M*N];
    for(int i=0;i<M;i++)
        arr[i] = buffer+i*N;

    在上面的代码中,arr是一二维数组指针,buffer才是实际存放数据的内存。arr[i]实际上是一个int*类型的指针,是一个地址,指向buffer中的某一段内存的起始地址A,从起始地址A开始共N个元素,就相当于arr中的第i行的N个元素。

    释放数组内存代码:

    delete []buffer;
    buffer = nullptr;
    delete []arr;
    arr = nullptr;
    

    4、补充

    对于需要动态分配的多维数组,可以使用嵌套的多重vector,这才是推荐的方式。

    展开全文
  • 主要介绍了C++ 二维数组参数传递的实现方法的相关资料,这里提供三种方法帮助大家实现这样的功能,需要的朋友可以参考下
  • 今天小编就为大家分享一篇关于C++二维数组中数组元素存储地址的计算疑问讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • C++二维数组sort排序问题

    万次阅读 多人点赞 2018-02-08 20:08:16
    实验内容:利用二维数组进行“三级排序”测试1:使用c++内置的普通型二维数组#include &lt;algorithm&gt; #include &lt;iostream&gt; using namespace std; bool cmp(int a[], int b[]) { ...

    以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?

    实验内容:利用二维数组进行“三级排序”

    测试1:使用c++内置的普通型二维数组

    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    bool cmp(int a[], int b[])
    {
    	if(a[0] != b[0]) return a[0] > b[0];
    	if(a[1] != b[1]) return a[1] > b[1];
    	if(a[2] != b[2]) return a[2] > b[2];
    }
    
    int main()
    {
    	int a[6][3] = { {1,4,3}, {1,4,7} , {1,3,5} , {2,9,4} , {2,5,8} , {3,9,6} };
    
    	//sort(a, a + 6, cmp);			//编译器直接报错。。 
    	sort((int**)a, (int**)(a+6), cmp);
    	
    	for(int i = 0; i < 6; ++i)
    		cout<<a[i][0]<<' '<<a[i][1]<<' '<<a[i][2]<<endl;
    
    	return 0;
    }

    没想到,两次尝试都以失败告终。分析原因,应该是数组名a和一维数组名a[0]、a[1]均为const类型指针,排序时无法交换它们而导致错误。//我也不太确定

    测试2:动态创建二维数组

    这样看起来就可以避免测试1中的种种问题了,代码如下:

    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    bool cmp(int a[],int b[])
    {
    	if(a[0] != b[0]) return a[0] > b[0];
    	if(a[1] != b[1]) return a[1] > b[1];
    	if(a[2] != b[2]) return a[2] > b[2];
    }
    
    int main()
    {
    	int a[6] = {1, 1, 1, 2, 2, 3};		//储存re[i][0] 
    	int b[6] = {4, 4, 3, 9, 5, 9};		//储存re[i][1] 
    	int c[6] = {3, 7, 5, 4, 8, 6};		//储存re[i][2] 
    	int i;
    	
    	int **re = new int*[6];		//动态创建二维数组 
    	for (i = 0; i < 6; ++i)
    	{
    		re[i] = new int[3];
    		re[i][0] = a[i];
    		re[i][1] = b[i];
    		re[i][2] = c[i];
    	}
    	
    	sort(re, re + 6, cmp);		//排序后输出 
    	for(i = 0; i < 6; ++i)
    		cout << re[i][0] << ' ' << re[i][1] << ' ' << re[i][2] << endl;
    
    	return 0;
    }


    虽然过程有些麻烦,但是总算得到了预期的结果。

    测试3:利用STL中的vector容器进行排序

    即利用vector<vector<int>>容器模拟二维数组进行排序

     

    #include <algorithm>
    #include <iostream>
    #include <vector>
    using namespace std;
    
    bool cmp(vector<int> a, vector<int> b)
    {
    	if(a[0] != b[0]) return a[0] > b[0];
    	if(a[1] != b[1]) return a[1] > b[1];
    	if(a[2] != b[2]) return a[2] > b[2];
    }
    
    int main()
    {
    	vector<vector<int>> vec = { {1,4,3}, {1,4,7} , {1,3,5} , {2,9,4} , {2,5,8} , {3,9,6} };
    	
    	sort(vec.begin(), vec.end(), cmp);
    
    	for(auto p : vec)
    		cout<<p[0]<<' '<<p[1]<<' '<<p[2]<<endl;
    
    	return 0;
    }

    看起来好像STL方便一些~

    总结:利用二维数组进行排序还是挺麻烦的,以后还是用结构体吧(逃...

    编译器:Devcpp(设置支持c++11)

    展开全文
  • C++二维数组的使用

    2012-10-15 19:26:49
    C++二维数组的使用
  • 我们常用的数据叫做一维数组,是一串连续的内存空间,二维数组是在一维数组的基础上,相当于每一个元素又是一个一维数组 二维数组的定义也很简单 //定义一个十行十列的二维数组,也可以说是一个连续的拥有10个大小...
  • C++中动态分配一维数组是十分常见的事,但会分配一维数组的人并不一定会分配二维数组。因为我想,不到特殊情况,我们可能很少想过要使用动态分配的二维数组。但不管怎么样,只要你是第一次想试着去分配一个二维数组...
  • c++二维数组

    2017-09-21 14:30:51
    定义一个数组a为int a[2][3],并初始化。 则sizeof(a):表示数组a所有元素占用的字节数。 sizeof(a[0]):表示一行所有元素占用的字节数。 sizeof(a[0][0])=sizeof(数据类型的名)。从而可以得到数组的行和列的...
  • 一些C++关于二维数组的编程实例,可以直接运行
  • C++二维数组排序方法

    千次阅读 2020-05-07 15:48:09
    方法说明 我们知道,在内存中二维数组是块连续的内存空间,因此我们可以用首地址来实现对二维数组的排序。具体方法同一维数组一样。在这里注意一点的是:定义一个...C++二维数组冒泡排序 #include<iostream> ...
  • 二维数组既可以通过二维访问也可以通过一维访问。 对于二维数组的传值,引进了数组指针。 #include void foo(int *p,int n)//一维访问 { for(int i=0;i;i++) printf("%d ",p[i]); printf("\n"); } //因为...
  • C++二维数组讲解、二维数组的声明和初始化 上一节 下一节返回目录 编辑/纠错/意见 关注(100) 更新:2012-05-08 分享到4 我们知道,一维空间是一条线,数学中用一条数轴来表达;二维空间是一个平面,数学中用...
  • C/C++二维数组总结

    万次阅读 多人点赞 2018-12-16 16:01:29
    先说在前面,一般的我们说的C/C++中的二维数组是定义在栈中的二维数组。比如定义了一个array[3][4],那就指的是定义了一个三行四列的矩阵形状的二维数组,如下图所示。这样的矩阵在内存中是以箭头右边的方式存放的,...
  • 关于用指针方式访问二维数组的问题 首先说明几种类型: int a[2][4] = { 1,2,3,4,5,6,7,8 };//二维数组 int **p; //二重指针跨度为sizeof(int *) int(*q)[4]; //该语句是定义一个指向数组的指针,指向含4个...
  • C++二维数组的输出与输入!
  • C++ 二维数组和指针数组 开发工具与关键技术:C++、VisualStudio 作者:何任贤 撰写时间:2019年04月10日 二维数组大家都很清楚,就是该数组包含的元素是一个数组,那么和指针数组又有什么关系呢?那么我先解释一下...
  • C++二维数组定义方式 目录 C++二维数组定义方式 1、定义方式 2、代码演示 1、定义方式 数据类型 数组名[行数][列数]; 数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}}; 数据类型 数组名...
  • C++二维数组做函数参数 二维数组做函数参数的形式主要有: /对于一个m行n列int元素的二维数组 //函数f的形参形式 f(int daytab[m][n]) {...} //以下两种可以忽略行数 f(int daytab[][n]) {...} f(int (*daytab)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,171
精华内容 35,268
关键字:

c++二维数组

c++ 订阅