<>前言
对于很多初学者的xdm而言,相信除了指针那块有极大的难度,结构体的难度也是不容小觑的,毕竟后面学数据结构和算法或者学其他的计算机语言,如:Java、Python这些,都是需要你C语言指针和结构体的基础足够扎实才能学得下去,否则你只能从入门到入土了,要想在计算机的道路走得更远,那么C语言这个计算机中的母语你是必须得牢牢掌握的,俗话说的好:“千里之堤溃于蚁穴!”只有当你的基本功打得扎实了,后面的学习你才能得心应手!万事开头难,不要被C语言的指针和结构体给吓倒,黎明前的黑暗只要熬过去就好,你可知道,当你学好C语言,对学习C++是有极大地帮助的,C语言是面相过程的程序语言,而后续你可能会学的C++或者Java这类语言是面向对象的程序语言。所谓“C生万物”,在编程的道路上当你把C/C++语言学的扎实的时候,你将会由意想不到的收获,你会发现你真的可以一星期学完Python,不到半个月的时间就搞懂现在兴起的Go语言,这不是吹牛,这是事实,因为C/C++是所有计算机语言的母语,其他语言都是在这基础之上演化出来的,学过的人都知道Java实际上就是C++语言的精简版,明白我的意思了吗xdm?所以当你开始学习C/C++的时候一定不要选择放弃,坚持下去就能看到希望!
“南方有一种毛竹,在最初的四年里,通常只长三厘米高。当是当到了第五年的春天,会以平均每天三十厘米的速度往上蹿,只用八周就可以长到二十多米高。这是由于在此前的四年时间里,毛竹看似没啥变化,但是实际上并没有闲着,而是悄悄地将根在土壤里延伸了数百平方米,为第五年的超速生长,储备了充足养分,奠定了雄厚的基础。”学习编程的过程也是同样如此,只要你C/C++语言的基础打好,,后面的那些语言简直就是“小菜一碟!”请你给自己足够的耐心,相信马克思主义哲学中所提到的那样,“量变达到一定程度必将引起质变。”这些话我对我自己说,也对xdm说,在编程的道路上大家一起前进!
那么接下来,我就开始为大家讲解初始C语言结构体(1)的内容,跟指针部分一样,后续内容会不断的更新,由初级阶段不断向高级阶段难度逐步递进,带xdm手把手拿捏C语言的结构体指针这块,楼主不才,若有错误或文章需要改进的地方还请大佬们指点一二。
<>C语言初始结构体(1)
<>序言:
在本章中,你将会学习到如何定义一个结构体,然后如何给一个结构体初始化,以及如何输入和输入一个结构体变量。
<>什么是结构体?
在C语言中,我们为了方便描述复杂的类型从而定义出结构体类型这样的类型以适应需求,比如说描述一个对象是人,那么就需要这个人的名字、身高、年龄、性别等等。
<>如何定义一个结构体?
一般情况下C语言定义一个结构体的模板为
也就是引用C语言中的结构体关键字struct来定义,需要有结构体的名字,还有结构体的成员
eg:近些年来非常火的游戏王者荣耀,用结构体类型来描述每个英雄,就需要有英雄的名字、点卷价格和金币价格、皮肤、背景故事和常说的话等等,对此我们就可以创建一个结构体类型叫做英雄,这样我们就可以很好描述王者荣耀里每个英雄了。
<>如何创建一个结构体变量以及初始化?
我还是来代码的方式来演示
总共有两种方式来创建结构体变量,一个是直接在定义完后的结构体末尾写变量名,这样就可以直接创建一个结构体变量,另外一种方式就跟其他变量一样,需要的时候才创建。第一种方式变量的初始化是随机值,第二种方式我们可以在创建的时候直接指定初始化!(注:在一般情况下,如果变量不初始化编译器会自动随机初始化。)
<>如何输入结构体变量和输出结构体变量?
我还是来代码的方式来演示
我们采用.这个结构体成员引用操作符来访问结构体类型里面的每个成员,同样作用的操作符还有->这个操作符,这两个操作符不同的地方是->操作符用于取出的是结构体变量的地址,然后要想访问其结构体内部成员,所以用->这个操作符方便访问,不然你就得解引用这个结构体变量再去用.这个操作符再去访问成员变量(代码演示演示如下:)
<>整体代码演示如下:
输入:
输出:
<>演示代码提取:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> struct hero { char name[20]
; int virtual_coins_price; int game_gold_coins_price; char role_skin[100]; char
role_background_story[1000]; char useful_expressions[1000]; }s2; int main() {
//结构体初始化 struct hero s1 = { "小乔", 588, 8888, "纯白花嫁", "14岁就嫁给周瑜,常年陪伴周瑜征战沙场",
"小乔最爱周瑜大人,欢迎周瑜大人回家" }; //输入结构体 scanf("%s%d%d%s%s%s", &s1.name, &s1.
virtual_coins_price, &s1.game_gold_coins_price, &s1.role_skin, &s1.
role_background_story, &s1.useful_expressions); scanf("%s%d%d%s%s%s", &s2.name,
&s2.virtual_coins_price, &s2.game_gold_coins_price, &s2.role_skin, &s2.
role_background_story, &s2.useful_expressions); //输出结构体 printf("%s%d%d%s%s%s\n",
s1.name, s1.virtual_coins_price, s1.game_gold_coins_price, s1.role_skin, s1.
role_background_story, s1.useful_expressions); printf("%s%d%d%s%s%s\n", s2.name,
s2.virtual_coins_price, s2.game_gold_coins_price, s2.role_skin, s2.
role_background_story, s2.useful_expressions); struct hero *ps1 = &s1;
//->方式访问结构体成员 printf("%s%d%d%s%s%s\n", ps1->name, ps1->virtual_coins_price, ps1
->game_gold_coins_price, ps1->role_skin, ps1->role_background_story, ps1->
useful_expressions); //指针解引用后再用.操作符访问结构体成员 printf("%s%d%d%s%s%s\n", (*(ps1)).
name, (*(ps1)).virtual_coins_price, (*(ps1)).game_gold_coins_price, (*(ps1)).
role_skin, (*(ps1)).role_background_story, (*(ps1)).useful_expressions); return
0; }
<>附1:更多精彩,请看后续更新,谢谢家人们支持!
<>备注:
楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢家人们一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm,若有编程学习方面的问题可以私信我一同探讨(我尽力帮),毕竟“众人拾柴火焰高”,大家一起交流学习,共同进步!
<>2021.12.25