结构体
结构体是用户建立由不同类型数据组成的混合型的数据结构(数据类型)。
系统提供的类型:int double float char long 数组,指针...
一般形式:
代码语言:javascript复制struct 结构体名{
成员;
};
例如:定义一个学生的结构体,学生包括姓名,性别,年龄。声明一个学生的变量,输出学生的信息。
代码语言:javascript复制#include<stdio.h>
#include<string.h>
struct Student{
char name[20];
char sex;
int age;
};
int main(){
struct Student stu,stu2;
strcpy(stu.name,"zhangsan");
stu.sex='M';
stu.age=10;
printf("%s %c %dn",stu.name,stu.sex,stu.age);
strcpy(stu2.name,"lisi");
stu2.sex='F';
stu.age=12;
printf("%s %c %dn",stu2.name,stu2.sex,stu2.age);
return 0;
}
第二种:
代码语言:javascript复制#include<stdio.h>
#include<string.h>
struct Student{
char *name;
char sex;
int age;
}stu1,stu2,stu3;
int main(){
stu1.name = "zhangsan";
stu1.sex = 'F';
stu1.age = 18;
stu2.name = "zhangsan";
stu2.sex = 'F';
stu2.age = 18;
stu3.name = "zhangsan";
stu3.sex = 'F';
stu3.age = 18;
printf("%s %c %dn",stu1.name,stu1.sex,stu1.age);
printf("%s %c %dn",stu2.name,stu2.sex,stu2.age);
printf("%s %c %dn",stu3.name,stu3.sex,stu3.age);
return 0;
}
第三种:
代码语言:javascript复制#include<stdio.h>
#include<string.h>
struct Student{
char *name;
char sex;
int age;
}stu1={"zhangsan",'F,18'},stu2={"lisi",'M',19};
int main(){
printf("%s %c %dn",stu1.name,stu1.sex,stu1.age);
printf("%s %c %dn",stu2.name,stu2.sex,stu2.age);
return 0;
}
结构体数组:
代码语言:javascript复制#include<stdio.h>
struct Student{
char name[20];
char sex;
int age;
};
int main(){
struct Student a[5]={
{"zhangsan",'M',20},
{"lisi",'M',20},
{"wangwu",'M',20},
{"zhaoliu",'M',20},
{"sunqi",'M',20}};
int i;
for(i=0;i<=4;i ){
printf("%s %c %dn",a[i].name,a[i].sex,a[i].age);
}
return 0;
}
结构体指针
结构体指针是指向结构体变量的指针,一个结构体变量的地址就是这个结构体变量的指针。
代码语言:javascript复制#include<stdio.h>
#include<string.h>
struct Student{
int num;
char name[20];
float score;
}stu1,stu2,stu3;
int main(){
struct Student *p;
p=&stu1;
(*p).num=1;strcpy((*p).name,"zhangsan");
(*p).score=98.5;
printf("%d %s %fn",(*p).num,(*p).name,(*p).score);
p=&stu2;
p->num=2;strcpy(p->name,"lisi");p->score=95.5;
printf("%d %s %fn",p->num,p->name,p->score);
return 0;
}