结构体,关键字
来源:互联网 发布:索尼手机设置4g网络 编辑:程序博客网 时间:2024/06/06 04:36
一.关键字
static: 修饰全局静态变量:作用范围局限于它的源文件,即只有本文件内的代码才可以访问它,变量名在其他文件内不可见。
修饰局部静态变量:局限于特定函数,但出作用域并不释放,在函数体内的静态变量的值也能够维持。
修饰静态函数:作用范围仅限于它的源文件,即只有本文件内才能够调用,函数名在其他文件不可见。
存放位置:程序开始时,存放在全局数据区,结束时释放空间,默认初始化值是0,使用时可改变其值。
extern: 可以置于变量或函数前,以表明变量或函数的定义在别的文件中,下面代码用到的这些变量或函数是外来的,不是本文件定义的,提示链接器遇到此变量和函数 时在其他模块中解析/绑定此标识符。
enum: 枚举类型的定义形式为:
enum typeName{ valueName1, valueName2, valueName3, ...... };
enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途;typeName是枚举类型的名字;valueName1, valueName2, valueName3, ......是每个 值对应的名字的列表。注意最后的;不能少。
需要注意的两点是:
( 1 ) 枚举列表中的 Mon、Tues、Wed 这些标识符的作用范围是全局的,不能再定义与它们名字相同的变量。
( 2 ) Mon、Tues、Wed 等都是常量,不能对它们赋值,只能将它们的值赋给其他的变量。
枚举和宏其实非常类似:宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。我们可以将枚举理解为编译阶段的宏。
二.结构体
1.在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:
struct 结构体名{
结构体所包含的变量或数组
};
2.结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。注意大括号后面的分号;不能少,这是一条完整的语句。
3.结构体变量
既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。注意关键字struct不能少。
4.结构体成员的获取和赋值
结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。数组使用下标[ ]获取单个元素,结构体使用点号 . 获取单个成员。获取结构体成员的一般格式为:
结构体变量名.成员名;
如:给上述结构体成员赋值
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
5. 结构体数组
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体。
定义结构体数组和定义结构体变量的方式类似,请看下面的例子:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
}class[5];
表示一个班级有5个学生。
结构体数组在定义的同时也可以初始化。
6.结构体和指针
指针也可以指向一个结构体,定义的形式一般为:
struct 结构体名 *变量名;
下面是一个定义结构体指针的实例:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1 = { "Tom", 12, 18, 'A', 136.5 };
//结构体指针
struct stu *pstu = &stu1;
注意:结构体变量名和数组名不同,数组名在表达式中会被转换为数组指针,而结构体变量名不会,无论在任何表达式中它表示的都是整个集合本身,要想取得结构体变量 的地址,必须在前面加&,所以给 pstu 赋值只能写作:
struct stu *pstu = &stu1;
而不能写作:
struct stu *pstu = stu1;
7.通过指针获取结构体成员
通过结构体指针可以获取结构体成员,一般形式为:
(*pointer).memberName
或者:
pointer->memberName
第一种写法中,. 的优先级高于*,(*pointer)两边的括号不能少。如果去掉括号写作*pointer.memberName,那么就等效于*(pointer.numberName),这样意义就完全不了。
第二种写法中,->是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针直接取得结构体成员;这也是->在C语言中的唯一用途。
- 结构体,关键字
- 关键字,结构体,调制信息
- 【C语言】 C 语言 关键字分析 ( 属性关键字 | 常量关键字 | 结构体关键字 | 联合体关键字 | 枚举关键字 | 命名关键字 | 杂项关键字)
- C#隐藏关键字 结构体的反射
- C语言:const关键字、结构体
- 结构体声明当中 __attribute__ ((__packed__))关键字
- vb.net的关键字和结构体
- typedef关键字与结构体、结构体指针的定义
- c99结构体指定初始化,以及 __attribute__ 关键字
- C#中关键字ref修饰类对象或结构体
- C语言struct关键字详解—结构体
- C语言struct关键字详解—结构体
- golang遍历 struct 等结构体,使用 range 关键字
- c99结构体指定初始化,以及 __attribute__ 关键字
- 黑马程序员--typedef关键字和结构体 枚举类型
- C语言struct关键字详解—结构体
- 字符串相关的函数 const关键字 堆空间 结构体
- map中结构体做关键字的注意事项
- mybatis中的一个异常:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to
- 淘宝咸鱼APP宝贝数据采集工具软件原理
- 基本数据类型分析
- 电热管结构特性
- C语言基础(笔记)
- 结构体,关键字
- 今天是当年的第几天——用javascript(js)编写
- Bitmap二次采样
- java继承与多态
- 只查看一个文件(100行)中的第20-30行内容
- SystemInit
- php 处理图像
- JavaSE基础知识总结--Collection、Map集合
- PowerDesigner V16.5 安装文件 及 破解文件