“struct结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。③“数据类型名结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。......
2023-11-20
在C语言中,枚举数据类型属于基本数据类型,但它并不是内置基本数据类型。程序中如果需要某种枚举类型仍然需要自行定义,枚举数据类型定义的一般形式为:
enum 枚举类型名{枚举元素标识符列表};
其中,enum是定义枚举类型的关键字,枚举元素必须使用合法的标识符予以表示。例如,下面语句定义了数据类型名为enum weekday的枚举数据类型:
enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat};
枚举元素标识符不是字符常量也不是字符串常量,定义时不要加单、双引号。枚举元素在同一程序中唯一的,即使在不同的枚举类型中也不能存在同名的枚举元素标识符。
编译器在编译程序时,会给每一个枚举元素指定一个整型常量值。若枚举类型定义中没有给元素指定整型常量值,默认情况下,整型常量值从0开始依次递增。因此,枚举数据类型weekday的7个元素Sun、Mon、Tue、Wed、Thu、Fri、Sat对应的整型常量值分别为0、1、2、3、4、5、6。
定义枚举类型时也可以从某一枚举元素开始指定起始值,从指定位置之后的每个枚举元素值依次递增1。还可以在枚举类型定义中对枚举元素起始值作多次改变,每次改变后枚举值从该处开始递增直到遇到下一次起始值的指定为止。例如,下面的枚举定义语句:
enum Weekday{Thu=4,Fri,Sat,Sun,Mon=1,Tue,Wed};
从Thu到Sun的枚举常量值依次为4、5、6和7,接着的Mon到Wed的枚举常量值依次为1、2和3。
枚举数据类型定义完成后,仍然需要定义枚举变量才能使用,常见的方法有:
①先定义枚举类型,然后定义枚举变量。例如:
enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat};
enum weekday a,b,c; //定义变量a,b,c
enum weekday day=Mon;//定义变量day并赋初值
②定义枚举类型与定义变量同时进行。例如:
enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat}a,b,c; //同时定义变量a,b,c
③只定义几个某种枚举数据类型的枚举变量。例如:enum{Sun,Mon,Tue,Wed,Thu,Fri,Sat}a,b; //定义无枚举数据类型名的变量a,b
使用枚举数据类型和枚举变量时必须注意以下几点:①不能在程序中修改枚举元素对应的整数值,例如:
enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat}day;(www.chuimin.cn)
day=Sun;
Sat=7;//错误,Sat不是变量,Sat表示某常量值②枚举变量只能用枚举元素标识符进行赋值,不能把对应的整型常数值直接赋给枚举变量。例如:
enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat}day;
day=Wed;day=3;//错误
如一定要把常数值赋给枚举变量,则必须用强制类型转换。例如:
day=(enum weekday)3;//与语句day=Wed;等效
③枚举类型变量和枚举类型数据可以进行关系运算。
枚举变量可与元素常量进行关系比较运算,同类枚举变量之间也可以进行关系比较运算,它们之间的关系运算是按它们表示的序号值进行的。例如:
enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat}day1,day2;
day1=Wed;
day2=Mon;
则表达式day2>day1的值为0,表达式Sat>day1的值为1。
④程序中不能直接输入或输出枚举变量的值(即枚举元素的标识符,如Mon),只能输入或输出枚举变量值对应的序号值。
【例11.1】 枚举变量的输入输出示例。
程序的运行结果为:
RED--0,YELLOW--1,GREEN--2
输入颜色号(0--2):2
颜色号2:GREEN
有关C语言程序设计基础(第3版)的文章
“struct结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。③“数据类型名结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。......
2023-11-20
一般来说,对于一个n(n>1)级指针变量其内容是存放一个n-1级指针变量的地址。虽然y和z都是指针变量,但它们指向的变量是不同的,显然不能用同一层次的指针变量来表示。图8.5多级指针在存储系统中的关系在C语言中,用指针变量的级别来区分不同层次的指针变量。指向普通变量的称为一级指针变量,指向一级指针变量的称为二级指针变量,以此类推。而且,只要数据类型相同,任意级别的指针变量可以与普通变量、数组等一起定义。......
2023-11-20
图5.3指针变量指针变量本身也是变量,所以指针变量在使用之前也需要定义。为指针变量赋值的方法有两种:一种是定义后,使用赋值语句的方式;另外一种是定义的同时进行初始化方式。......
2023-11-20
指针数组是一组有序的指针的集合。用一维指针数组处理二维数组示例。程序一次运行的结果为:11415019618955311556532879428指针数组还常用于处理若干个相关的一维数组,此时指针数组中的每个元素指向一个一维数组的首地址。上面程序综合使用了指针数组和二级指针变量,在数据对象的定义和初始化阶段完成后形成的处理结构如图8.9所示。......
2023-11-20
用户自己定义的结构体类型,与系统定义的标准类型一样,是可以用来定义结构体类型的变量。这种方法定义的结构体类型在程序后面不可使用,因为缺少完整的结构体类型名。......
2023-10-21
图8.1函数内存映射方式1.指向函数指针变量的定义C语言中可以定义指针变量来存储函数的首地址,并利用该指针变量对函数进行调用。指向函数的指针变量的真正作用是作为函数参数使用,使程序在功能的实现上具有更大的灵活性。指向函数的指针变量求最大值、最小值和两数之和。......
2023-11-20
变量的生存期取决于它的存储类型。所谓“存储类型”,是指系统为变量分配的具有某种特性的存储区域。生存期表示了变量存在的时间。一个变量究竟属于哪一种存储方式,并不能仅从其作用域来判断,还应有明确的存储类型说明。在C语言中,函数内部凡未说明存储类型的变量均视为自动变量。静态局部变量始终存在着,也就是说它的生存期为整个源程序生存期。静态局部变量的使用举例。......
2023-10-21
书写在特定函数内部时,用于向该函数声明被调用函数的特征,此时仅有书写了函数声明语句的函数知道被声明函数的存在。当被调函数与主调函数位于同一源文件,且被调函数的定义出现在主调函数之前时,不必对被调函数进行声明,其原因是编译系统此时已经知道了被调函数的所有特征。对被调函数不必进行声明的示例。......
2023-11-20
相关推荐