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;
}
这样初始化程序无法运行。。。。。。
请高人指点!!
坐等!!!
展开
 我来答
henry0616
2008-04-06 · TA获得超过478个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:183万
展开全部
(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;
}
第二种写法和第三种写法本质上一样的,指向指针的指针其实就是指针的数组
巢婧谷和
2020-04-10 · TA获得超过3931个赞
知道大有可为答主
回答量:3172
采纳率:24%
帮助的人:431万
展开全部
绝对错了,不错你扇死我!
二维数组的初始化分为,一种为按行分段初始化,另一种为按行连续初始化。
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编译系统绝对不承认!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
278510138
2008-04-05
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
上面的代码中最后少了};
另外数组不能整体拷贝.只能通过下标逐个赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式