提示错误error C2143: syntax error : missing ';' before '{'

D_vcp 2016-06-01 09:23:53
想在类的构造函数里,对一个二维数组进行初始化(该二维数组已在定义类时声明),不管是用方法一还是方法二,都会出现提示错误error C2143: syntax error : missing ';' before '{',搞不懂是什么原因?语法好像也没错啊! 求C大神指点

//方法一
zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}};

//方法二
zifu[0]={1, 1, 1, 1, 1, 0, 0, 0};
zifu[1]={0, 1, 1, 0, 1, 1, 0, 0};
zifu[2]={0, 1, 1, 0, 0, 1, 1, 0};
zifu[3]={0, 1, 1, 0, 0, 1, 1, 0};
zifu[4]={0, 1, 1, 0, 0, 1, 1, 0};
zifu[5]={0, 1, 1, 0, 0, 1, 1, 0};
zifu[6]={0, 1, 1, 0, 1, 1, 0, 0};
zifu[7]={1, 1, 1, 1, 1, 0, 0, 0};
...全文
979 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
D_vcp 2017-08-29
  • 打赏
  • 举报
回复
[quote=引用 19 楼 wyyy2088511 的回复:] {{},{}}这里要加的是逗号而不是分号 恩,明白,谢谢啦!
jena_wy 2017-07-18
  • 打赏
  • 举报
回复
{{},{}}这里要加的是逗号而不是分号
D_vcp 2017-07-17
  • 打赏
  • 举报
回复
引用 17 楼 jianwen0529 的回复:
[quote=引用 16 楼 D_vcp 的回复:] 难道初始化应该是: int zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; 赋值时是: zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; 是这样的吗? (去年的问题,其实有点记不清了;现在又有了新的解决思路)
你一年还没搞清楚这个问题,初始化全部用逗号 赋值只能一个个元素进行赋值 你的两种方式都是语法不允许的错误 //定义并初始化 int a[2][2] = { {1, 2}, {3, 4} }; int a[2][2]; a[0][1] = 1; a[1][0] = 3; [/quote] ……中间有段时间没有继续学习,谢谢你的提示!
幻夢之葉 2017-07-17
  • 打赏
  • 举报
回复
引用 16 楼 D_vcp 的回复:
难道初始化应该是: int zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; 赋值时是: zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; 是这样的吗? (去年的问题,其实有点记不清了;现在又有了新的解决思路)
你一年还没搞清楚这个问题,初始化全部用逗号 赋值只能一个个元素进行赋值 你的两种方式都是语法不允许的错误 //定义并初始化 int a[2][2] = { {1, 2}, {3, 4} }; int a[2][2]; a[0][1] = 1; a[1][0] = 3;
D_vcp 2017-07-17
  • 打赏
  • 举报
回复
难道初始化应该是: int zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; 赋值时是: zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; 是这样的吗? (去年的问题,其实有点记不清了;现在又有了新的解决思路)
「已注销」 2016-06-23
  • 打赏
  • 举报
回复
你的那种写法只能在声明时初始化,赋值是不能那样写。
D_vcp 2016-06-03
  • 打赏
  • 举报
回复
引用 12 楼 赵4老师的回复:
[quote=引用 11 楼 D_vcp 的回复:] 用注释法,错误好多,心累
目前还没有更好的办法。要不楼主想个更好的办法。[/quote] 果断放弃治疗,让我静静
D_vcp 2016-06-01
  • 打赏
  • 举报
回复
用注释法,错误好多,心累
D_vcp 2016-06-01
  • 打赏
  • 举报
回复
我直接在在构造函数里初始化的 还需要放到构造函数初始化列表里吗?
赵4老师 2016-06-01
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
赵4老师 2016-06-01
  • 打赏
  • 举报
回复
“变量赋值”和“变量初始化”不是一回事! “变量赋值”发生在运行期,其写法遵循赋值语法规定。 “变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
paschen 2016-06-01
  • 打赏
  • 举报
回复
你要在构造函数时初始需要放到构造函数初始化列表里
D_vcp 2016-06-01
  • 打赏
  • 举报
回复
把分号改成逗号,又出现如下错误: error C2143: syntax error : missing ';' before ','
D_vcp 2016-06-01
  • 打赏
  • 举报
回复
头文件代码如是: class CDrawDianZhenView : public CView { protected: // create from serialization only CDrawDianZhenView(); DECLARE_DYNCREATE(CDrawDianZhenView) // Attributes public: CDrawDianZhenDoc* GetDocument(); int zifu[8][8]; //定义了一个点阵数组,进行图形演示 // Operations Cpp代码如是: CDrawDianZhenView::CDrawDianZhenView() { // TODO: add construction code here //zifu={ {1, 1, 1, 1, 1, 0, 0, 0};{0, 1, 1, 0, 1, 1, 0, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 0, 1, 1, 0};{0, 1, 1, 0, 1, 1, 0, 0};{1, 1, 1, 1, 1, 0, 0, 0}}; zifu[0]={1, 1, 1, 1, 1, 0, 0, 0}; zifu[1]={0, 1, 1, 0, 1, 1, 0, 0}; zifu[2]={0, 1, 1, 0, 0, 1, 1, 0}; zifu[3]={0, 1, 1, 0, 0, 1, 1, 0}; zifu[4]={0, 1, 1, 0, 0, 1, 1, 0}; zifu[5]={0, 1, 1, 0, 0, 1, 1, 0}; zifu[6]={0, 1, 1, 0, 1, 1, 0, 0}; zifu[7]={1, 1, 1, 1, 1, 0, 0, 0}; //并且分别用每行首字符地址来初始化也不行?? };
ghx287524027 2016-06-01
  • 打赏
  • 举报
回复
大概是两种方式,一,定义的时候初始化,参考上楼。第二,先定义,然后利用循环初始化;还没见过你这么写的……
ghx287524027 2016-06-01
  • 打赏
  • 举报
回复
char zifu[8][8]={ {1, 1, 1, 1, 1, 0, 0,1}, {0, 1, 1, 0, 1, 1, 0,1}, {0, 1, 1, 0, 0, 1, 1,1}, {0, 1, 1, 0, 0, 1, 1,1}, {0, 1, 1, 0, 0, 1, 1,1}, {0, 1, 1, 0, 0, 1, 1,1}, {0, 1, 1, 0, 1, 1, 0,1}, {1, 1, 1, 1, 1, 0, 0,1} };
小灸舞 版主 2016-06-01
  • 打赏
  • 举报
回复
多贴点代码。
方法1每个元素中间的分号至少也应该改为,
参考:C++11的统一初始化
赵4老师 2016-06-01
  • 打赏
  • 举报
回复
引用 11 楼 D_vcp 的回复:
用注释法,错误好多,心累
目前还没有更好的办法。要不楼主想个更好的办法。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧