C++ 的二维数组初始化
#include<iostream.h>classmatrix{public:int*m[3];matrix(intn[3][3]=0){int(*m)[3]=newin...
#include<iostream.h>
class matrix{
public:
int *m[3];
matrix(int n[3][3]=0)
{
int (*m)[3]=new int[3][3];
m=n;
}
这样初始化程序无法运行。。。。。。
请高人指点!!
坐等!!! 展开
class matrix{
public:
int *m[3];
matrix(int n[3][3]=0)
{
int (*m)[3]=new int[3][3];
m=n;
}
这样初始化程序无法运行。。。。。。
请高人指点!!
坐等!!! 展开
展开全部
(1)iostream后面不加.h,
(2)int n[3][3]=0有误,不能对数组进行这样的初始化,应该是对数组元素逐个赋值
(3)int (*m)[3]=new int[3][3]; 前面不加int,加上的话,相当于在局部对m重新定义
初始化方法如下:
(1)int m[3][3];
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
m[i][j] = 0;
(2)int **m = new int*[3];
for(int i = 0; i < 3; i++)
{
m[i] = new int[3];
for(int j = 0; j < 3; j++)
m[i][j] = 0;
}
(3)int *m[3];
int **m = new int*[3];
for(int i = 0; i < 3; i++)
{
m[i] = new int[3];
for(int j = 0; j < 3; j++)
m[i][j] = 0;
}
第二种写法和第三种写法本质上一样的,指向指针的指针其实就是指针的数组
(2)int n[3][3]=0有误,不能对数组进行这样的初始化,应该是对数组元素逐个赋值
(3)int (*m)[3]=new int[3][3]; 前面不加int,加上的话,相当于在局部对m重新定义
初始化方法如下:
(1)int m[3][3];
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
m[i][j] = 0;
(2)int **m = new int*[3];
for(int i = 0; i < 3; i++)
{
m[i] = new int[3];
for(int j = 0; j < 3; j++)
m[i][j] = 0;
}
(3)int *m[3];
int **m = new int*[3];
for(int i = 0; i < 3; i++)
{
m[i] = new int[3];
for(int j = 0; j < 3; j++)
m[i][j] = 0;
}
第二种写法和第三种写法本质上一样的,指向指针的指针其实就是指针的数组
展开全部
绝对错了,不错你扇死我!
二维数组的初始化分为,一种为按行分段初始化,另一种为按行连续初始化。
int
a[2][3]={{5,6},{7,8},{9,10}};
这是第一种,
int
a[2][3]={5,6,7,8,9,10};
这是第二种。
a这个二维数组一共2行3列共6个存储空间,图形为:
5
6
7
8
9
10
正好占满。
而且C语言默认可以省略行数,但不能省略列数
你看看你的初始化
int
a[][4]={{0,0,3},{},{0,10}};
行数省略是没有任何问题的。
但是你是按行分段初始化
第一行0
0
3
第二行
第三行0
10
注意了,你只对其中3行进行了初始化,第4行丢了。
所以a是一个半初始化的数组,C编译系统绝对不承认!
二维数组的初始化分为,一种为按行分段初始化,另一种为按行连续初始化。
int
a[2][3]={{5,6},{7,8},{9,10}};
这是第一种,
int
a[2][3]={5,6,7,8,9,10};
这是第二种。
a这个二维数组一共2行3列共6个存储空间,图形为:
5
6
7
8
9
10
正好占满。
而且C语言默认可以省略行数,但不能省略列数
你看看你的初始化
int
a[][4]={{0,0,3},{},{0,10}};
行数省略是没有任何问题的。
但是你是按行分段初始化
第一行0
0
3
第二行
第三行0
10
注意了,你只对其中3行进行了初始化,第4行丢了。
所以a是一个半初始化的数组,C编译系统绝对不承认!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的代码中最后少了};
另外数组不能整体拷贝.只能通过下标逐个赋值
另外数组不能整体拷贝.只能通过下标逐个赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询