精华内容
下载资源
问答
  • 我今天碰到一道出乎我以前理解的问题: ...可为什么我辅助的时候采用以下这样的形式没法给二维数组赋值呢?还请大佬指点,不甚感激。 ``` int a[2][3]; for(int i=0;i;i++) scanf("%d",&a[i]); ```
  • 我用了string二维数组 但我想问一下就是在computer这个构造函数里面 我的想法是把string里面的每四个月工资都分别转到double这个数组里 但是查了很多资料最后写成这样还是算不出平均工资和总工资[face]monkey:2.gif...
  • 然后建立源文件b.cpp,导入上一头文件文件,并建立一个用于二维数组赋值的函数。该函数被另一源程序每分钟内高频重复调用,以刷新二维数组最后一列的数据。并且,当刷新到每分钟第0秒时,二维数组每一列向左位移一...
  • void Input(double (*COMPLEX)[2],int Number) { int dReal=1,dImage=2; cout<<"请输入实部:"; scanf("%d",*(COMPLEX+Number)+dReal); cout<<...这样可以给二维数组赋值吗?
  • 建了一个二维数组(19*19): ![图片说明](https://img-ask.csdn.net/upload/201806/06/1528254415_305614.png) 初始化: ![图片说明](https://img-ask.csdn.net/upload/201806/06/1528254479_16033.png) ...
  • c++二维数组的 声明 赋值 函数传值 遍历 #include <iostream> using namespace std; void getArr(int **,int,int); int main() { int columns = 2; //两列 int rows = 3; //三行 int input_list[] = {...

    更新2021/3/10

    #include <iostream>
    
    using namespace std;
    
    void getArr(int **,int,int);
    int **returnArr();
    
    int main()
    {
        int columns = 2; //两列
        int rows = 3; //三行
        int input_list[] = {1,3,5,6,7,7};
        int **testArr;
        testArr = new int *[columns]; //初始化列 [1] [2]
        int t = 0;
        for(int i=0;i<columns;i++) {
            testArr[i] = new int[rows];//初始化行//[1] []
            for(int j=0;j<rows;j++) {           //[2] []
                testArr[i][j] = input_list[t];  //[3] []
                t++;
            }
        }
        getArr(testArr,columns,rows);//函数传参
    	int **testArr2 = returnArr();
    	getArr(testArr2,columns,rows);//这个行和列的值应该可以用sizeof方法获得
        return 0;
    }
    
    //传入函数
    void getArr(int **testArr,int columns,int rows) {
        for(int i=0;i<columns;i++)
            for(int j=0;j<rows;j++)
                cout<<testArr[i][j]<<endl;
    }
    
    //传出函数
    int **returnArr() {
    	int columns = 2; //两列
        int rows = 3; //三行
        int input_list[] = {1,2,3,4,5,6};
        int **testArr;
        testArr = new int *[columns]; //初始化列 [] []
        int t = 0;
        for(int i=0;i<columns;i++) {
            testArr[i] = new int[rows];//初始化行//[] []
            for(int j=0;j<rows;j++) {           //[] []
                testArr[i][j] = input_list[t];      //[] []
                t++;
            }
        }
        return testArr;
    }
    
    

    先码代码,有空补理论

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

    千次阅读 2017-11-02 10:30:00
    如果数组的元素又是数组,则称为二维数组。例如 int a[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9 ,10 ,11} };可以将a看成一个数组,这个数组中有3个元素,每个元素又是一个包含4个int的数组。 1 二维数组的...

    如果数组的元素又是数组,则称为二维数组。例如

    int a[3][4] = {
    {0, 1, 2, 3}
    , {4, 5, 6, 7}
    , {8, 9 ,10 ,11}
    };
    可以将a看成一个数组,这个数组中有3个元素,每个元素又是一个包含4int的数组。

    1 二维数组的标识符

    当给出二维数组名而没有方括号时,可以将其看作是二维数组的标识符。该标识符不是左值,不能给它赋值,可以将其看作是数组的起始地址,即数组中第一个元素的地址。

    2 a[x]的含义

    x是非负整数。在之前提到,二维数组可以看成是数组的数组,所以a[0]表示二维数组中的第一个元素,a[1]表示二维数组中的第二个元素,而二维数组中的元素类型还是素组,所以a[0]表示数组{0, 1, 2, 3}的地址,a[1]表示数组{4, 5, 6, 7}的地址。

    int a1 = *(a[0]+1);
    int a2 = *(a[1]+2);
    此时,a1的值是1a2的值是6,如图1所示。

     


    1 a[x]的含义

    3 a+x的含义

    x是非负整数。a是指向其第一个元素,则a+1指向其第二个元素,a+2指向其第三个元素,如图2所示。


    2 a+x的含义

    对于二维数组aaa[0]的值都是表示数组a的第一个元素的地址。而aa+1a+2的类型都是二维数组,所以a+1(a+1)[0]的值都是表示a+1的第一个元素的值。

    int b1 = *(a+1)[0];
    int b2 = *(a+1)[1];
    此时b1的值是4b2的值是8

    4 (a+x)[y]的含义

    xy都是整数,在“3 a+x的含义”中提到,a+x的含义是指向二维数组的第x-1个元素,而a+x的类型仍然是二维数组,所以(a+x)[y]的表示二维数组中第y-1个元素。

    int b3 = *((a+1)[0]+1);
    b3的值是5,如图3所示。

     

     

     

    3 (a+x)[y]的含义

    4 定义指向数组的指针

    定义数组的指针与定义数组类似,首先声明元素类型,之后是变量名字和维数。因为定义的类型是指针,所以需要在标识符前加上*

    int (*ip)[4] = &a[2];
    需要注意的是,方括号[]的优先级别高于*,所以在定义数组的指针时,必须加上小括号来设置优先级。如果不加入小括号设置优先级

    int *ip[4];
    此时ip表示一个数组,该数组中包含4个元素,每个元素的类型是int*
    展开全文
  • 给其中用来存储棋盘信息的二维数组赋值时却遇到了问题: 在结构体内是不能进行数据初始化的,而在函数中(假设我定义了一个结构体d),也不能使用用d.map[3][3] = {{,,,},{,,,}};这样的方法给结构体内的数组...

    最近在用C++做一个象棋小游戏,为了规避全局变量的使用,想使用结构体来声明需要使用的数据。给其中用来存储棋盘信息的二维数组赋值时却遇到了问题:

    在结构体内是不能进行数据初始化的,而在函数中(假设我定义了一个结构体d),也不能使用d.map[2][3] = {{,,,},{,,,}};这样的方法给结构体内的数组赋值,因为编译器会报这样的错误:错误error C2440: “=”: 无法从“initializer-list”转换为“int” 。

    翻译过来就是:无法将初始化列表转化为整型。

    这是因为 map[2][3] = {{,,,},{,,,}};这样的方法,仅能用来初始化数组,而不能用来对数组进行赋值。而声明结构体的目的是抽象出数据类型,在声明结构体时进行初始化也是不合理的,所以数组元素的值得使用其他的方法进行赋值。在 C++ 中,结构体和类是基本相同的,所以我们可以通过给结构体添加构造函数来进行数组的赋值,但终究也是通过循环对数组元素赋值实现的。

    数组初始化列表仅能用于声明数组时的初始化,不能用于数组的赋值。

    改进前:
    所以就得另想办法给这个数组赋值了。可以用循环来完成:先在函数中定义并初始化另一个和你需要使用的数组同行同列的数组,之后使用循环将新定义的数组的值依次赋值给结构体内的数组。

    用这种方法可以较方便的给结构体内的数组赋值,而不是使用d.map[0][0] = …;这种方法一个一个的赋值(我差点就这样做了)。下面是我使用到的函数代码:

    void Mouse::InitMap() {
    	struct Data d;
    	int mapdata[10][9] =
    	{ { 'C', 'H', 'E', 'M', 'B', 'M', 'E', 'H', 'C' },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 0, 'G', 0, 0, 0, 0, 0, 'G', 0 },
    	{ 'P', 0, 'P', 0, 'P', 0, 'P', 0, 'P' },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 'p', 0, 'p', 0, 'p', 0, 'p', 0, 'p' },
    	{ 0, 'g', 0, 0, 0, 0, 0, 'g', 0 },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 'c', 'h', 'e', 'm', 'b', 'm', 'e', 'h', 'c' } };
    
    	for (int i = 0; i < 10; i++) {
    		for (int j = 0; j < 9; j++) {
    			d.map[i][j] = mapdata[i][j];
    		}
    	}
    	PutChess(d);
    }
    

    希望对遇到类似问题的同学能有所帮助。也祝自己赶快完成这个小项目。
    改进后:

    #include <iostream>
    
    using namespace std;
    
    struct Data {
    	int map[10][9];
    	
    	//构造函数 
    	Data(int array[][9]) {
    		for (int i = 0; i < 10; i++) {
    			for (int j = 0; j < 9; j++) {
    				map[i][j] = array[i][j];
    			}
    		}
    	}
    	//输出查看
    	void PrintMap() {
    		for (int i = 0; i < 10; i++) {
    			for (int j = 0; j < 9; j++) {
    				cout << map[i][j] << " ";
    			}
    			cout << endl;
    		} 
    	} 
    };
    
    int main() {
    	int mapdata[10][9] =
    	{ { 'C', 'H', 'E', 'M', 'B', 'M', 'E', 'H', 'C' },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 0, 'G', 0, 0, 0, 0, 0, 'G', 0 },
    	{ 'P', 0, 'P', 0, 'P', 0, 'P', 0, 'P' },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 'p', 0, 'p', 0, 'p', 0, 'p', 0, 'p' },
    	{ 0, 'g', 0, 0, 0, 0, 0, 'g', 0 },
    	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    	{ 'c', 'h', 'e', 'm', 'b', 'm', 'e', 'h', 'c' } };
    	
    	Data d(mapdata);
    	
    	d.PrintMap();
    	
    	return 0;
    }
    

    运行效果:
    在这里插入图片描述
    可以看出,结构体内的数组元素已经被成功赋值,需要注意的是,因为使用的是整型数组,其中的字符被转换成了对应的 ASCII 码。

    展开全文
  • C++ vector 实现二维数组赋值

    万次阅读 多人点赞 2019-05-11 15:19:30
    vector二维数组赋值 vector<vector<float> >bk; vector<float> MM; MM.push_back(1); MM.push_back(22); MM.push_back(3); MM.push_back(6); bk.push_back(MM); 原文链接 (1...

    vector二维数组赋值

    vector<vector<float> >bk;
    
    vector<float> MM;
    
        MM.push_back(1);
        MM.push_back(22);    
        MM.push_back(3);
        MM.push_back(6);
    
        bk.push_back(MM);

    参考链接

    (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
    (2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
    (3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
    (4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
    (5)int b[7]={1,2,3,4,5,9,8};vector<int> a(b,b+7); //从数组中获得初值

     

    在STL中Vector这一容器,无论是在封装程度还是内存管理等方面都优于传统C++中的数组。本文主要是关于使用Vector初始化、遍历方面的内容。其他二维的思想也是类似的。

    这里简单叙述一下C++ 构建二维动态数组

    int **p;
    p = new int*[10];    //注意,int*[10]表示一个有10个元素的指针数组
    for (int i = 0; i < 10; ++i)
    {
        p[i] = new int[5];
    }

    定义一个二维整形数组并初始化:

    vector<vector<int> > array(m); //这个m一定不能少//vector<int> array[m];
    //初始化一个m*n的二维数组
    for(int i=0;i<m;i++) 
    {
        array[i].resize(n);
    }
    //遍历赋值
    for(i = 0; i < array.size(); i++)
    {
       for (j = 0; j < array[0].size();j++) 
        {   
            array[i][j] = (i+1)*(j+1); 
        } 
    }

    例子

    int main()
    {
        int i = 0, j = 0;
    	vector< vector<int> > maze(8, vector<int> (12, 0));    
        int A[8][12] = {{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                        { 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
                        { 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1 },
                        { 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1 },
                        { 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1 },
                        { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 },
                        { 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 },
                        { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
                       };
        int m, n;
        for(m = 0; m < maze.size(); m++)
        {
            for(n = 0; n < maze[m].size(); n++)
            {
                maze[m][n] = A[m][n];
                cout << maze[m][n] << " ";
            }
            cout << "\n";
        }
    
    }

     

    展开全文
  • c++二维数组初始化

    2020-03-15 16:43:06
    (c/c++定义二维数组初始化) C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。 如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量...
  • C++二维数组声明与初始化的示例

    千次阅读 2020-06-08 19:52:14
    C++二维数组初始化 #include <iostream> #include <string> using namespace std; int main() { int **a = new int *[10]; char **c = new char *[10]; string *str = new string[10]; char temp[20...
  • 关于C++一维数组,二维数组的创建,以及如何从控制台输入赋值到数组中
  • c++ 二维数组初始化

    2020-07-24 10:17:15
    1)静态数组 int array2[3][2]={{4,2},{5},{6}}; 2)动态数组,行列不确定由 m、n定义 int **array2=new int*[m];...以上初始化完成,后续赋值及使用 ...释放二维数组 for (int i = 0; i < m;i++) { delete[]a
  • C/C++二维数组名和二级指针

    万次阅读 多人点赞 2016-06-23 11:53:41
    二维数组名不能赋值给二级指针,否则运行中可能会出现错误。
  • //动态分配存储原图片的像素信息的二维数组 long *width,*height;//新定义一个像素结构体二维数组 width=wid;height=hei; fpi=fopen(strFile,"rb"); if(fpi != NULL){ //先读取文件类型 WORD bfType;...
  • 二维数组的索引不可以互换 ,例如:a[10][100]不可写成a[100][10] new为对象申请内存后,如果对象访问到内存之外的地址,则会赋值一个电脑数,不会报错。例如: int* b; b = new int(5); cout << b...
  • C/C++二维数组的用法

    2016-06-09 01:00:00
    二维数组在存储时按行优先连续存储,数组名是一个二维指针,如 int a[3][2] 中...二维数组在声明的时候可以直接全部赋值,如: int a[2][3]={0};//All elems are 0 int a[2][3] ={1,2,3,4,5,6};Orint a[2][3] ={ ...
  • C++创建二维数组

    2020-08-12 15:08:50
    C++中利用vector创建二维数组 二维数组的创建 vector <int> vec(10,90); //将10个一维动态数组初始为90 vector<vector<... //初始化row * col二维动态数组,初始化值为0 ...二维数组赋值
  • 如题:C++中怎么将一维数组输出为二维数组,比如一维数组有(1.2.3.4…100),输出为5行20列的二维数组 已调试,正常输出。 ** #include using namespace std; int main() { int iArr[100]={};//声明一维...
  • 代码如下: for(int (*p)[4]=ia;p ;++p) for(int *q=*p;q ;++q) cout*q; cout; 本人是一名菜鸟
  • C++ 动态二维数组(二维vector)

    千次阅读 2020-05-11 13:55:39
    在完成一项任务时可能会需要用到动态二维数组,在C++中,可以使用二维vector创建二维数组。对二维数组的使用,其操作可分为增删查改。其中修改操作可以通过简单赋值操作完成,之后便不再赘述。 创建二维数组: ...
  • C/C++ 定义并赋值二维数组

    千次阅读 2014-08-21 18:09:02
    【数组与指针】如何在C/C++中动态分配二维数组 在C/C++中动态分配二维数组可以先申请一维的指针数组,然后该数组中的每个指针再申请数组,这样就相当于二维数组了,但是这种方法会导致每行可能不相邻,从而访问效率...
  • C++动态二维数组的申请、赋值、使用、释放以及作参数示例
  • 只有6行代码,非常简洁,这是char二级指针给char二维数组赋值的逻辑。二级指针需要先赋值操作,加断点就可以看见二维数组里的值了。
  • c++数组赋值

    千次阅读 2019-10-01 12:07:43
    c++的基础不牢啊....void getSize(int n[]) //把数组名传给函数的形参时候 一维数组[]不用指定大小 二维数组[n][] 形参必须要指定第一维的大小{ std::cout<<sizeof(n)<<std::endl; //这里是4 虽然...
  • c++二维数组

    2019-12-17 20:26:58
    二维数组:一类具有相同数据类型元素的行列集合; 二维数组的定义: 元素类型 数组名[行数][列数];(行数/列数:常量表达式) 二维数组的内存: 1.内存大小:元素所占字节数 * 行数 * 列数 2.内存分布:连续的,按行存储; 二维...
  • 优雅的二维数组循环赋值

    千次阅读 2008-04-06 10:43:02
    [size=medium]最近在 C++ 博客上看到了一段优雅的二维数组赋值代码,学习了一下。 作者为了实现图片中特定效果的二维数组,参考迷宫问题设计了一个优雅的算法,算法的基本思想就是对二维数组按照从外到内的方式赋值...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 344
精华内容 137
关键字:

c++二维数组赋值

c++ 订阅