结构体简介
-在实际的处理对象中,有许多信息是由多个不同类型数组合一起进行描述,而且这些不同类型
的数据是互相联系组成了一个有机的整体。此时,就要用到一种新的构造类型数据--结构体
(srtucture),
简称结构
-结构体的使用为处理复杂的数据结构(如动态数据结构等),提供了有效的手段,且他们为函数
间传递不同类型的数据提供了方便。
结构体概念
-结构体是用户自定义的新数据类型,有点像高级语言里的对像一样
-例如:定义一个人的结构体,那么这个结构体就有 身高、年龄、性别等
定义一个结构体类型的一般形式为
struct 结构名
{
数据类型 成员名1;
...
数据类型 成员名n;
}
例如:一个人的结构体
#include <stdio.h>
#include <string.h>
#define N 10
struct person{
int age;
int sex;
char name[N];
} p ;
int main(){
struct person p1,p2;
p1.age =25;
p1.sex =1;
strcpy(p1.name,"copy");
printf("%d %d,%sn",p1.age,p1.sex,p1.name);
return 0;
}
结构体大小
大小:一个结构体变量占用内存的实际大小,也能用sizeof求出
sizeof(运算量)
例如:
sizeof(person p1) sizeof(p2)
结构体数组:是指数组中的每个元bai素都是一个结构体
三种方式
一、先定义结构体类型,再定义结构体数组
struct 结构体名
{
成员表表;
};
struct 结构体名
例如:
struct person
{
int age;
ing sex;
char name[10];
};
sturct person p[3];
二、在定义结构体同时定义数组
struct 结构体名
{
成员表表;
} 数组名[元素个数];
例如:
{
int age;
ing sex;
char name[10];
}p[3];
三、直接定义结构体数组
struct
{
成员表表;
};
例如:
{
int age;
ing sex;
char name[10];
}p[3];
#include <stdio.h>
#include <string.h>
#define N 10
struct person{
int age;
int sex;
char name[N];
} p[2] ;
int main(){
p[1].age =10;
p[1].sex =1;
strcpy(p[1].name,"copy");
printf("%d %d,%sn",p[1].age,p[1].sex,p[1].name);
return 0;
}
可以设定一个指针变量用来指向一个结构体变量。些时该指针变量的值是结构体变量的起始地址
,该指针称为结构体指针
一般形式:
struct 结构体名 *结构体指针名
注:其中的结构体名必须是已经定义的
#include <stdio.h>
#include <string.h>
#define N 10
struct person{
int age;
int sex;
char name[N];
} p[2] ;
int main(){
p[1].age =10;
p[1].sex =1;
strcpy(p[1].name,"copy");
struct person * p1;
p1 =&p[1];
printf("%d %d,%sn",p[1].age,p[1].sex,p[1].name);
printf("%d %d,%sn",p1->age,(*p1).sex,p1->name);
return 0;
}
使用 指针->属性 或 (*<指针名>).属性 取值