A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如:
struct Person{
char *name ="itcast";
int age=20;
};

为什么这里的name和age不能像类成员变量那样直接初始化

9 个回复

倒序浏览
这只是个变量类型,就像int,char,int [],里面只是告知了成员都是啥类型,必须定义变量才能初始化,初始化的是变量, 不是类型。
struct Person{
char *name;
int age;
};
struct Person Jack = {"Jack", 20};
Jack才是定义出来的变量,可以初始化
回复 使用道具 举报
楼上说得对,struct结构体只是一个模版,你都把模版赋值了
那所有根据模版定义的结构体变量就是一个样子,这样结构体的意义也就失去了
这个跟类差不多,但是类也是没法直接就在里面赋初值的啊,你再确认下?
回复 使用道具 举报
沙发正解,结构体就是一种数据类型,你有见过直接用int 赋值的嘛?
比如说:int 10;
这样肯定不行啊,这是啥玩意,所以说同样的道理,把它想象成int就很好理解了
回复 使用道具 举报
饶世红 来自手机 中级黑马 2014-12-19 12:49:00
报纸
从今以后 发表于 2014-12-19 10:42
这只是个变量类型,就像int,char,int [],里面只是告知了成员都是啥类型,必须定义变量才能初始化,初始 ...


class  Person{
String  name="itcast";
int  age=20;
}

Person p = new Person();


struct  Person{
char *name="itcast";
int age=20;
};
struct Person p;
这两个有什么区别,都是定义一个类型
回复 使用道具 举报
erlou shuode  dui !!!!!!!!!!!!!!
回复 使用道具 举报
邓明 中级黑马 2014-12-19 13:17:47
7#
饶世红 发表于 2014-12-19 12:49

class  Person{
String  name="itcast";

你举例的类是C#类吧?结构体是C结构体吧?
拜托这两个千万不要搞到一起,没有可比性的
另外不要在类或者结构体里面赋值
C#可能不会报错,但是你这么写就是错误的写法,没有直接赋初值的!
回复 使用道具 举报
结构体只能是在声明定义结构体变量的同时给结构体成员初始化,如struct Person p ={"itcast",20}
回复 使用道具 举报
   初始化是结构体变量 ,定义的是结构体类型
回复 使用道具 举报
你去看看头文件,定义类型的时候有没有初始化不就知道了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马