关于 结构体初始 和 链表返回值 的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:01:23
struct student
{
int id; //学号
std::string name; //姓名
int age; //年龄
std::string department; //系别
float gpq; //平均成绩
};
问题一:
student s1={1,"PCH",26,"com",99.9};

student s1;
s1.id=1;
s1.name="PCH";
s1.age=26;
s1.department="com";
s1.gpq=99.9;
有什么区别?

问题二:
为什么用student s1={1,"PCH",26,"com",99.9};是错误的?

另一段代码:
node search(node *headptr,char keyword);
void insert(node *headptr,char keyword,char temp);
void del(node *headptr,char keyword);
void destroy(node *headptr);

int main()
{
//Create a link list.
node *headptr=create(); //这里成功
//Read the link list.
read(headptr); //这里成功
//Search a keyword.
std::cout<<"Let's search a keyword.Please input a word : "<<std::endl;
char

问题1:student s1;会开辟一个结构体空间,里面内容未知,随后因为每个成员被赋值而得到初始值,student s1={1,"PCH",26,"com",99.9};会开辟结构体空间,里面内容即初始化内容

问题2:student s1={1,"PCH",26,"com",99.9};是正确的,没有错误

问题3:node *searchptr=search(headptr,keyword)你的search根据原型返回node,而不是node* 所以会报错。

问题4, readptr是 node*类型,而node search(node *headptr,char keyword)
是返回node类型,所以报错

3和4的解决,直接申明search为node *search(node *headptr,char keyword)
即可

1,
第一个叫初始化
第二个叫赋值

2,
student s1={1,"PCH",26,"com",99.9};错的?
这样是可以的饿,记住只有声明的时候可以这样初始化。
student s1;
s1 = {1,"PCH",26,"com",99.9};
这样是不对的,语法上规定的,没为什么

3,
search函数返回的是node类型,传给一个node*类型当然会报错

4,
注意你函数的声明啊
node search(node *headptr,char keyword);
它的返回值是node类型的,你就要返回node类型啊,你那个函数里,返回
node*类型了,自己改下吧,要统一啊