概述
结构体数组
结构体是一种集合,它里面包含多个变量和数组,他们类型形同,也可以不同,每个变量或数组都称为结构体成员
struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 };
结构体成员定义与变量相同,只是不能初始化,};不能少
结构体变量
struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 } stu1, stu2;
将变量放在结构体定义的后面即可
当只需要stu1,stu2两个变量,后面不需要定义结构体的其他变量,也可以再定义时不给出结构体名,例如:
struct{ //没有写 stu char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 } stu1, stu2; 因为没有结构体名,后面不能再定义新的变量
可以对成员逐一赋值,也可以在定义时整体赋值
struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };
整体赋值仅仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值
结构体是一种自定义的数据 ,是创建变量的模板,不占用内存空间;结构体变量才是包含实实在在的数据,需要内存空间来存储
结构体指针
当一个指针变量指向结构体时,称为结构体指针
struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1 = { "Tom", 12, 18, 'A', 136.5 }, *pstu = &stu1;
数组名在表达式中会被转化为数组指针,结构体变量不会,要想取得结构体变量的地址,必须前面加上&
获取结构体成员
一般有两种
(*pointer).memberName
或者
pointer->memberName
->是一个新的运算符,习惯称它为箭头,可以通过->直接获取结构体成员
但是要注意的是,只有“指针变量名”后面才能加“->”,千万不要在成员名后面加“->”。 综上所述,以下 3 种形式是等价的:
-
结构体变量.成员名。
-
(*指针变量).成员名。
-
指针变量->成员名。
#include <stdio.h> int main(){ struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1 = { "Tom", 12, 18, 'A', 136.5 }, *pstu = &stu1; //读取结构体成员的值 printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!n", (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score); printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!n", pstu->name, pstu->num, pstu->age, pstu->group, pstu->score); return 0; }
typedef,const,c语言随机数
使用关键字typedef可以为类型起一个新的别名
[c语言typedef的用法详解]<http://c.biancheng.n et/view/2040.html>
使用关键字typedef可以为类型起一个新的别名。typedef的用法一般为
typedef oldName newName;
typedef时赋予现有类型一个新的名字,而不是创建新的类型。尽量使用含义明确的标识符,并尽量大写。
最后
以上就是安静刺猬为你收集整理的结构体数组结构体数组的全部内容,希望文章能够帮你解决结构体数组结构体数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复