C学习-基础:结构体类型 结构体变量 结构体数组
结构体类型 概念
结构体是一种构造类型,它是由若干相互关联的“成员”组成的。每个成员可以是一个基本数据类型,也可以是数组、指针,或者又是一个构造类型。
结构体既然是一种“构造”而成的数据类型,那么在使用前必须先定义它的组成成分,叫做结构类型。
构造了某个结构体类型后,就可以用它来说明该结构类型的变量,然后在程序中引用和操纵该结构体变量
结构类型的定义
struct 结构类型名
{成员列表};
每个成员其形式为:类型说明符 成员名;
结构体与数组的异同
结构体与数组的相似处:
它们都是多个数据的集合
结构体与数组的不同处:
结构体中的数据项是无序的,它们的类型可以不同;
结构体成员的访问方式与数组不同,不用下标而用名称来访问。
结构变量的定义 三种方法
先定义结构类型,再说明结构变量。
struct person{ long num; char name[30]; int age; char sex; char address[200]; }; struct person ab1,ab2;
在定义结构类型的同时说明结构变量
struct person{ long num; char name[30]; int age; char sex; char address[200]; }ab1,ab2;
直接说明结构变量
struct { long num; char name[30]; int age; char sex; char address[200]; }ab1,ab2;
结构体变量的初始化
void main() { struct person { long num; char name[30]; int age; char sex; char address[200]; }ab1 = {1, "Gao Hong ", 38,’M’, "Beijing"}; //在定义时进行初始化赋值 }
结构体变量的赋值
#include <string.h> void main() { struct person { long num; char name[30]; int age; char sex; }; struct person ab1, ab2; ab1.num = 1; //直接给成员赋值 strcpy(ab1.name,“Zhao Jun”); //用 strcpy 函数赋值 printf(“input age and sex\n”); scanf(“% d % c”, &ab1.age, &ab1.sex); // 交互式输入方法赋值 ab2 = ab1; // 另一个结构体 整体赋值 printf("Number=%ld\nName=%s\n", ab2.num, ab2.name); //输出单个 成员 printf("age=%d\nsex=%c\n", ab2.age, ab2.sex); }
结构体 长度
结构变量的总长度为各个成员长度的总和,一般用 sizeof (结构类型名) 来获取结构变量在内存实际所占字节的总长度。例如:sizeof (struct person);
结构体变量的引用
结构变量名.成员名
若成员本身又是一个结构,引用方法为:用 .运算符 逐级访问结构的成员。 例如:ab1.lxfs.email
结构体数组
通常结构体数组用来表示具有相同结构体类型的结构体变量的集合,
struct person { long num; char name[30]; int age; char sex; char address[200]; }; struct person abook[10];
如:
struct person { long num; char name[30]; int age; char sex; char address[200]; } abook[3] = {{1, "Xu Chong", 25, "F", "Beijing"}, {2, "Tao Wei", 26, "F", "Shanghai"}, {3, "Liu Qin", 35, "M", "Shenzhen"}};
共 0 条评论