不进行初始化,在main函数中进行赋值
/* Note:Your choice is C IDE */
#include "stdio.h"
struct Student{
int num;//学号
char name[10];//姓名
char address[30];//地址
char sex;//性别
int age;//年龄
}stu1,stu2;
void main()
{
stu1.num=2333;
/*stu1.name="张三";
错误写法,这里面的name是一个数组名
如果要对一个字符数组用字符串的形式赋值,必须在初始化的时候才可以
但是可以从键盘利用%s一次输入一个字符串*/
printf("请输入姓名:");
scanf("%s",stu1.name);
printf("请输入你的地址:");
scanf("%s",stu1.address);
stu1.sex='f';
stu1.age=18;
printf("%d %s %s %c %d",stu1.num,stu1.name,stu1.address,stu1.sex,stu1.age);
}
结果显示:
请输入姓名:李小白
请输入你的地址:China
2333 李小白 中国 f 18
注意:
用%s读入的一行字符串传到数组之后,仍然能够正常输出数组当中第几号位元素
例如在上面的代码中再加入一行输出语句的话
printf("%c",stu1.address[1]);
就会输出address数组当中的address[1],即 h
直接进行初始化
/* Note:Your choice is C IDE */
#include "stdio.h"
struct Student{
int num;//学号
char name[10];//姓名
char address[30];//地址
char sex;//性别
int age;//年龄
}stu1={2010,"李白","北京",'f',18},stu2;
void main()
{
printf("%d %s %s %c %d",stu1.num,stu1.name,stu1.address,stu1.sex,stu1.age);
}
结果显示:
2010 李白 北京 f 18
说明:
(1)结构体类型并非只有一种,而是可以设计出许多种结构体类型,例如
struct Teacher
struct Worker
struct Date等结构体类型
各自包含不同的成员
(2) 成员可以属于另一个结构体类型。
struct Date
{ int month; int day; int year; };
struct Stu
{ int num;char name[20];
char sex;int age;
struct Date birthday;
char addr[30];
};