关于C语言的结构体 高手请进
例如结构体定义如下:structstudent{charname;intnumber;structstudent*next;}以上定义了学生的信息;我想用从键盘输入的形式...
例如结构体定义如下:
struct student{
char name;
int number;
struct student *next;
}
以上定义了学生的信息;
我想用从键盘输入的形式,来增加学生的性别,年龄等信息;
请问:可以这样实现吗,怎么样实现?
很谢谢foraics认真解释 展开
struct student{
char name;
int number;
struct student *next;
}
以上定义了学生的信息;
我想用从键盘输入的形式,来增加学生的性别,年龄等信息;
请问:可以这样实现吗,怎么样实现?
很谢谢foraics认真解释 展开
2个回答
2006-01-01
展开全部
可以实现
struct student s1;
scanf("%c,%d",s1.name,s1.number);
注意输入时候以逗号分隔
struct student s1;
scanf("%c,%d",s1.name,s1.number);
注意输入时候以逗号分隔
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一定要使用 student->next这个结构指针,而且要求不破坏student这个结构的定义吗?这样子如果再想加入性别年龄这种数据,恐怕比较不合适,而且程序看起来也不清晰
一定要的话也可以,定义一个新结构,比如名为detail,detail的第一项是struct student,这样这个第一项的地址实际上和这个struct detail的地址相等,也就是student的next指针和包含这个student结构的detail结构的next指针相等(下面的例子说明了这一点),但是在引用结构指针的时候一定要记住强制类型转换。
#include<stdio.h>
#define MALE 0;
#define FEMALE 1;
struct student
{
char name;
int number;
struct student *next;
};
struct detail
{
struct student lpBasicInformation;
int sex;
int age;
struct detail *next;
};
int main(void)
{
struct detail student1,student2;
student1.lpBasicInformation.name='A';
student1.lpBasicInformation.number=1;
student1.age=18;
student1.sex=MALE;
student2.lpBasicInformation.name='B';
student2.lpBasicInformation.number=2;
student2.age=17;
student2.sex=FEMALE;
student2.next=NULL;
student2.lpBasicInformation.next=NULL;
student1.next=&student2;
student1.lpBasicInformation.next=&(student2.lpBasicInformation);
if(student1.next==(struct detail*)student1.lpBasicInformation.next)printf("Right");//一定不要忘记强制类型转换
return 0;
}
一定要的话也可以,定义一个新结构,比如名为detail,detail的第一项是struct student,这样这个第一项的地址实际上和这个struct detail的地址相等,也就是student的next指针和包含这个student结构的detail结构的next指针相等(下面的例子说明了这一点),但是在引用结构指针的时候一定要记住强制类型转换。
#include<stdio.h>
#define MALE 0;
#define FEMALE 1;
struct student
{
char name;
int number;
struct student *next;
};
struct detail
{
struct student lpBasicInformation;
int sex;
int age;
struct detail *next;
};
int main(void)
{
struct detail student1,student2;
student1.lpBasicInformation.name='A';
student1.lpBasicInformation.number=1;
student1.age=18;
student1.sex=MALE;
student2.lpBasicInformation.name='B';
student2.lpBasicInformation.number=2;
student2.age=17;
student2.sex=FEMALE;
student2.next=NULL;
student2.lpBasicInformation.next=NULL;
student1.next=&student2;
student1.lpBasicInformation.next=&(student2.lpBasicInformation);
if(student1.next==(struct detail*)student1.lpBasicInformation.next)printf("Right");//一定不要忘记强制类型转换
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询