自学内容网 自学内容网

结构体通讲——数据结构解惑


结构:一个变量里包含很多变量

一.第一种写法

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{123}};//初始化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

->前面必须是一个指针,指针使用箭头起到解指针再访问的作用


原文地址:https://blog.csdn.net/weixin_73236117/article/details/143024621

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!