文章目录
- 一.第一种写法
- 二.第二种
- 三.第三种
- 四.->
结构:一个变量里包含很多变量
一.第一种写法
int a[];//一个数组中可以包含许多相同类型的数组
想让一个数组中包含很多不同类型的变量用结构
struct
{
int a;
char b='c';
}t,ti;//t和ti拥有了前面所定义的结构
int main()
{
t.a;//.:访问符,对t这个变量的a让它=10
ti.a=2132;
ti,b='#';
}
但是要再定义一个这个结构的变量时需要再重新定义
int mian()
{
struct
{
int a;
char b='c';
}ki;
}//太麻烦
二.第二种
struct person//是一个类型
{
int num;
char name[10];
};
想使用的话需要定义一个变量
struct person p;//定义语句,sruct person是一个类型
//p:变量,p具有了person的结构
//person.num不行,因为person不是变量
//p.num可以,p是变量
若想把p的num输出出来可以给他一个定义
p.num=20;
printf("%d ",p.num);
如果要放字符串,不可以:
p.name=“jedxhu”;
字符串是一个数组,但不可以这么赋值给name,因为name是一个已经定义好的一个变量,所以不能再给他这个字符串
如不可以:
char a[10];
a=“secxdwui”;
不可以定量的值赋值给他,因为只可以在初始化的时候使用
若要写的话必须初始化给他写上
char[10] a="wdgqyi";
如何让他合法?
struct person
{
int num;
char name[10]=“jsvcdy”;//
};
但是不能在int main ()里修改成别的值
所以必须在初始化的时候写
也可以:
int main()
[
struct person p={28,"sguix"};
//初始化成功,大括号写在同一行这是一种初始化写法
//这里初始化了就不能再在结构里初始化了
}
三.第三种
typedef struct
{
int num;
int a[100];
}Data;//是一种类型,不是变量
int main()
{
Data p={19,{1,2,3}};//初始化p。p:Data类型的变量,p就具有了Data的结构
p.a[1]=10;
printf("%d"p.a[1]);
1.
2.
四.->
Data *hi;//设置一个Data结构的类型的指针
hi =&h;//指针指向取h的地址,然后赋给hi这个指针
如果想要获得hi这个指针对应的这个值hi的a第二个变量
printf("%d",(*hi).a[2]);//解指针
//从里向外剥壳
上面的有点麻烦,->起到简化作用
hi->a[2];//他指向的结构对应的访问
//p->xxx等价于(*p).xxx
->前面必须是一个指针,指针使用箭头起到解指针再访问的作用