在现实生活中,每样事物都是需要信息的,无论是人,动物还是植物,还是生活用品,劳动工具等等……他们所具有的信息都不是一个3.14就能表示他们信息的,在这篇文章就会讲到结构体;
结构体在C语言当中是非常重要的知识点,它使得C语言有能力可以去描述复杂类型,在现实生活中,一个学生需要的信息有哪些?名字、年龄、性别、学号、成绩……在C语言中可以使用结构体创造一个学生信息的类型,用于存储学生的信息;接下来我就实际演示一下
struct stu
{
char name[30];
int age;
char sex[10];
float score;
};
这是创建了一个学生信息类型的结构体,里面存储着名字,年龄,性别,成绩,想在主函数里面调用给个变量名存储学生信息,这个变量名也就代表着是一个学生了,接下来操作一下;
int main()
{
struct stu a = { "小明",16,"男",76.5 };
printf("1:%s %d %s %f\n",a.name,a.age,a.sex,a.score); //打印结构体成员变量格式:结构体变量.成员变量
struct stu* pa = &a;
printf("2:%s %d %s %f\n", (*pa).name, (*pa).age, (*pa).sex, (*pa).score);//通过*pa读取a里面的成员变量信息进行打印,(*pa)的效果就跟结构体变量名a的效果一样
printf("3:%s %d %s %f\n", pa->name, pa->age, pa->sex, pa->score);//运用指针变量名调取结构体里的信息,
return 0;
}
这里需要介绍两个词义,一个是结构体变量,还有一个成员变量,前面创建了了学生类型的结构体,在我们的主函数中创建一个运用这种类型的结构体肯定得有一个变量去存放赋予的信息,所以就有了结构体变量,结构体里赋予的信息当然也需要给予一个变量进行存放信息,而结构体里放置的信息都是这个结构体的因素/成员,所以结构体内部的变量就叫做成员变量,调用结构体里的成员变量进行打印,需要运用操作符".",前面放结构体变量,后面放成员变量;
前面学了一些关于指针的知识,指针是用来存放地址的,我们当然也可以利用指针存放的地址去调用地址里存放的那个变量,所以我们此时创建一个指针变量进行存储结构体变量a的地址,指针变量的类型取决于你要存储的那个地址里存放的变量的类型,前面我们创建的是struct stu这样一个类型的结构体,所以struct stu是一个类型,我们定义指针变量也就如上图所示,进行了? ? ? ? ? ? ? ? ? struct stu* pa=&a的代码操作,指针变量的调用方法就是*pa,*pa此时存放的就是a的地址,而我们存储变量是,变量值都是存储在所在空间的第一个字节的地址里,所以*pa就相当于是在调用变量a了,用*pa把a替换一下,就有了第二次打印的那条代码,这里书写方式是需要把*pa括起来;
第三个打印方式运行了一个新的操作符"? ->? ",当我们把指针变量创建好后,打印时“? ->? "左边放指针变量,右边放成员变量,也能达到同样的效果;这是三种不同的打印方式却可以打印同样的结果,下面是打印展示;
名字随便定义的,没有特殊意义,没有指向谁;
以上是这一篇章的学习分享,?如果有哪里讲的不对,还请大佬指出,小白本人虚心接受指教,谢谢。
|