设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1718|回复: 6
打印 上一主题 下一主题

[求助]关于结构体数组的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 02:15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
郁闷的,看的一午的书,再上练习,怎么调试都调不好,不知道哪里出了问题,高手帮忙指点!!!
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
struct Student
{
int num;
char name[10];
char sex;
int age;
float score[3];
}stu[2];
int main()
{
int k;
Student stu;
stu={101,"zhang",'M',19,95.5,64.0};
cout<<stu.num;
return 0;
}
错误提示:
Compiling...
number three.cpp
D:\c++\number three.cpp(17) : error C2059: syntax error : '{'
D:\c++\number three.cpp(17) : error C2143: syntax error : missing ';' before '{'
D:\c++\number three.cpp(17) : error C2143: syntax error : missing ';' before '}'
执行 cl.exe 时出错.

如果将Student stu;
stu={101,"zhang",'M',19,95.5,64.0};
改成Student stu={101,"zhang",'M',19,95.5,64.0};程序就不出错的,不知道这两者有什么区别。
2#
发表于 2009-11-3 02:15:41 | 只看该作者
那你看书上是用的哪个撒!
Student stu;
stu={101,"zhang",'M',19,95.5,64.0}; //这是赋值



Student stu={101,"zhang",'M',19,95.5,64.0};//这是初始化



虽然他们都是用 “=” 但是意义大不一样了。
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 02:15:44 | 只看该作者
结构体不允许这样赋值,但是初始化可以。斑竹已经说出了这两种的不同;
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 02:15:49 | 只看该作者
以下是引用风的声音在2007-10-22 21:43:50的发言:
结构体不允许这样赋值,但是初始化可以。斑竹已经说出了这两种的不同;
补充纠正一点:

是没有定义构造函数的非抽象类(所有成员公有)才可以用类似数组模式的初始化。
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 02:15:54 | 只看该作者
stu.num=101;
strcpy(stu.name,"zhang");
stu.sex='M';
stu.score[1]=19;
stu.score[2]=95.5;
stu.score[3]=64.0
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-3 02:15:55 | 只看该作者
最好定义一个构造函数
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-3 02:15:56 | 只看该作者
结构体可以在定义的时候就给初始化.
既然是弄类的,当然是要有构造函数来初始化一个事例了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 02:26 , Processed in 0.113034 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表