C 基础 - 结构
Posted David
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 基础 - 结构相关的知识,希望对你有一定的参考价值。
C语言提供 结构变量(struct variable) 来扩展表示数据的能力。
需求:创建一个图书目录。
打印每本书的各种信息: 书名,作者,价格,出版社等。
可以使用C结构来描述数据。
结构声明:描述了一个结构的组织布局。
1 struct book { /* structure template: tag is book */ 2 char title[MAXTITL]; 3 char author[MAXAUTL]; 4 float value; 5 }; /* end of structure template */
并没有描述实际的数据对象,只是描述了对象由什么组成。
定义结构变量
结构有两层含义
一、结构布局
二、定义结构变量
/* 把library 声明为一个使用book结构布局的结构变量 */ struct book library
或者可以这样写
struct book { /* book标记可以省略 */
char title[MAXTITL];
char author[MAXAUTL];
float value;
} library; /* 声明的右花括号后跟变量名 */
/* book类型的结构数组 */
struct book library[MAXBKS];
/* 声明初始化结构指针 */
struct book * library;
/* 赋值,需要加上取址符 */
library = &suprise;
初始化结构
struct book library = { "C Primer Plus", "史蒂芬 普拉达", "80" };
还可以使用初始化器来初始化成员
/* 只初始化book结构中 value成员 */
struct book gift = { .value = 10.99 }; /* 按照任意顺序初始化成员 */ struct book surpise = { .value = 25.99, .author = "Steven", .title = "C Primer Plus" };
访问结构成员
点来访问结构中的成员
library.value
.value .author .title 相当于结构的下标。
用指针访问结构中的成员
如果 him == &library, 那么him->income
如果 him == &library[0], 那么him->income 即是 library[0].income
另一种方法: & 与 * 是一组互逆运算
fellow[0].income == (*him).income /*一定要加括号,因为.的优先级高*/
结构嵌套
struct names { /* 第一个结构 */ char fist[LNE]; char last[LEN]; }; struct guy { struct names handle; /* 结构嵌套 */ char favfood[len]; char job[LEN]; float income; };
struct guy fellow = {
{David Zhang},
"Fish",
"Software Engineer",
"9999.00",
};
/* 访问嵌套中结构的成员 */
fellow.handle.first
向函数传递结构的信息
结构之间可以相互赋值
联合是一种数据类型
枚举
typedef
以上是关于C 基础 - 结构的主要内容,如果未能解决你的问题,请参考以下文章