结构体、共用体及枚举型
- 格式:pdf
- 大小:556.72 KB
- 文档页数:59
1 声明一个结构体类型的一般形式为:struct 结构体名{成员表列};如:struct student{int num;char name[20];char sex;int age;float score;char addr[30];};2 定义结构体类型变量的方法(1)先声明结构体类型再定义变量名例如:struct student student1, student2;| | |结构体类型名结构体变量名(2)在声明类型的同时定义变量这种形式的定义的一般形式为:struct 结构体名{成员表列}变量名表列;(3)直接定义结构体类型变量其一般形式为:struct{成员表列}变量名表列;即不出现结构体名。
注意:成员名可以与程序中的变量名相同,二者不代表同一对象。
3 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
例如:scanf(″%d″,&student1.num);(输入student1.num的值)printf(″%o″,&student1);(输出student1的首地址)4 结构体数组的初始化struct student{int num;char name[20]; char sex;int age; float score; char addr[30];}stu[2]={{10101,″LiLin″,′M′,18,87.5,″103 BeijingRoad″},{10102,″Zhang Fun″,′M′,19,99,″130 Shanghai Road″}};5 指向结构体变量的指针#include <string.h>#include <stdio.h>void main(){struct student{long num;char name[20];char sex; float score;};struct student stu_1;struct student* p; p=&stu_1;stu_1.num=89101;strcpy(stu_,”LiLin”);stu_1.sex=‘M’;stu_1.score=89.5;printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,stu-1.num,,stu-1.sex,stu-1.score);printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,(*p).num,(*p).name,(*p).sex,(*p).score);}6 以下3种形式等价:结构体变量.成员名(*p).成员名p->成员名7 用指针处理链表(1)malloc函数(2) calloc函数(3) free函数其函数原型为void free(void *p);7.1 typedef struct{int n;struct{int y,m,d;}date;}PERSON;下面定义结构体数组并赋初值PERSON x[2]={1,04,10,1,2,04,12,30};PERSON x[2]={{1,04,10,1},{2,04,12,30}};PERSON x[2]={1,{04,10,1},2,{04,12,30}};7.2struct person{int id;char name[10];}per={1,"123456"};="123456"[0]='1'7.3struct sk{int n;float x;}date,*p;要使p指向date中的n域:p=(struct sk *)&date.n;8 共用体的概念使几个不同的变量共占同一段内存的结构称为“共用体”类型的结构。
c语言中各种数据类型C语言中的各种数据类型在C语言中,数据类型是非常重要的概念。
它定义了变量的类型及其在内存中所占据的空间大小。
C语言中有多种数据类型,包括基本数据类型和派生数据类型。
本文将依次介绍这些数据类型,并给出一些使用示例。
1. 基本数据类型1.1 整型(int)整型是C语言中最常用的数据类型之一。
它用于表示整数,包括正整数、负整数和零。
整型的大小取决于机器的架构,但通常情况下,int类型占用4个字节的内存空间。
下面是一个整型变量的声明和赋值的示例:```int num = 10;```1.2 浮点型(float和double)浮点型用于表示实数,包括小数和指数形式的数。
C语言中提供了两种浮点型:float和double。
float类型占用4个字节的内存空间,而double类型则占用8个字节的内存空间。
下面是一个浮点型变量的声明和赋值的示例:```float pi = 3.14;double e = 2.71828;```1.3 字符型(char)字符型用于表示单个字符,它占用1个字节的内存空间。
在C语言中,字符型变量使用单引号来表示。
下面是一个字符型变量的声明和赋值的示例:```char ch = 'A';```2. 派生数据类型2.1 数组(array)数组是一种派生数据类型,它可以存储多个相同类型的元素。
数组的大小在声明时指定,并且在程序运行期间不能改变。
下面是一个整型数组的声明和赋值的示例:```int nums[5] = {1, 2, 3, 4, 5};```2.2 结构体(struct)结构体是一种可以包含多个不同类型变量的数据类型。
它可以将不同类型的变量组合在一起,形成一个逻辑上的整体。
下面是一个结构体的声明和使用的示例:```struct Student {char name[20];int age;float score;};struct Student stu;strcpy(, "Alice");stu.age = 18;stu.score = 95.5;```2.3 枚举(enum)枚举是一种用户自定义的数据类型,它可以定义一组具有名称的常量。
C语言中的组合数据类型在C语言中,组合数据类型是一种非常重要的概念。
它允许我们将多个不同类型的数据组合在一起,形成一个新的数据类型,以方便我们对这些数据进行管理和操作。
本文将详细介绍C语言中的组合数据类型,并探讨其在实际应用中的作用和用法。
一、结构体(Structures)结构体是C语言中最基本的组合数据类型之一。
它允许我们将不同类型的数据按照一个特定的结构组织在一起。
结构体由多个成员变量组成,每个成员变量可以是任意类型的数据。
通过使用结构体,我们可以方便地描述和处理一些具有复杂结构的数据。
C语言中定义结构体的语法如下:```struct 结构体名 {类型成员变量1;类型成员变量2;类型成员变量3;...};```例如,我们可以定义一个表示学生信息的结构体:```struct Student {int id;char name[20];int age;float score;};```在上面的例子中,我们定义了一个名为Student的结构体,它有四个成员变量,分别表示学生的学号、姓名、年龄和成绩。
使用结构体时,我们可以通过结构体名加成员变量名的方式来访问和操作结构体的数据。
例如,要输出学生的姓名,可以使用以下代码:```struct Student stu;strcpy(, "John");printf("Name: %s\n", );```通过结构体,我们可以方便地对复杂的数据进行整体操作,并且可以自定义多个结构体,以满足不同的需求。
二、共用体(Unions)共用体是C语言中另一种重要的组合数据类型。
它允许在同一块内存空间中存储不同类型的数据,但同一时间只能存储其中一种类型的数据。
共用体帮助我们节省了内存空间,更加灵活地处理数据。
C语言中定义共用体的语法如下:```union 共用体名 {类型成员变量1;类型成员变量2;类型成员变量3;...};```例如,我们可以定义一个表示不同数据类型的共用体:```union Data {int i;float f;char str[20];};```在上面的例子中,我们定义了一个名为Data的共用体,它有三个成员变量,分别是整型变量i、浮点型变量f和字符数组str。
C语言知识总结——宏,枚举,结构体,共用体1、define宏定义以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个宏,程序在预处理阶段将用define定义的来内容进行了替换。
因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。
define定义的常量,预处理时只是直接进行了替换,,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
,因此在编译时它不对宏的定义进行检查,作用域不影响对常量的访问。
它的常量值只能是字符串或数字。
该命令有两种格式:一种是简单的常量宏定义, 另一种是带参数的宏定义。
不带参数的宏:#define< 名字 >< 值 > 要注意,没有结尾的分号,因为不是C的语句,名字必须是一个单词,值可以是各种东西,宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。
如有错误,只能在编译已被宏展开后的源程序时发现。
注意.宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。
宏定义其作用域为宏定义命令起到源程序结束。
如要终止其作用域可使用#undef命令带参数的宏:像函数的宏,一般的定义形式:带参宏定义的一般形式为:「#define 宏名」(形参表)字符串,也是没有结尾的分号,可以带多个参数,#define NB(a,b)((a)>(b)?(b):(a)), 也可以组合(嵌套)使用其他宏,注意带参数宏的原则一切都要有括号,参数出现的每个地方都要有括号。
带参数的宏在大型的程序的代码中使用非常普遍,在#和##这两个运算符的帮助下可以很复杂,如“产生函数”,但是有些宏会被inline函数代替(C++的函数)使用宏好处:“提高运行效”。
定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。
c语言允许的数据类型C语言允许的数据类型在C语言中,数据类型是用来定义变量或函数返回值的属性。
C语言中允许的数据类型包括基本数据类型和派生数据类型。
本文将详细介绍C语言允许的数据类型及其特点。
1. 基本数据类型1.1 整型(int)整型是C语言中最基本的数据类型之一,用于表示整数。
整型可以分为有符号整型和无符号整型。
有符号整型可以表示正数、负数和零,而无符号整型只能表示非负数和零。
整型的大小取决于编译器和操作系统,但一般情况下,int类型占用4个字节。
1.2 浮点型(float和double)浮点型用于表示带有小数点的数值。
C语言中提供了两种浮点型数据类型:float和double。
float类型占用4个字节,而double类型占用8个字节。
double类型的精度比float类型更高,可以表示更大范围的数值。
1.3 字符型(char)字符型用于表示单个字符。
在C语言中,字符型变量通常占用1个字节。
字符型可以表示ASCII码、字母、数字、符号等各种字符。
2.1 数组(array)数组是由相同类型的元素组成的集合。
在C语言中,数组可以存储多个元素,并通过下标来访问各个元素。
数组的大小在定义时确定,并且不可改变。
2.2 指针(pointer)指针是用于存储内存地址的变量。
通过指针,可以间接访问存储在内存中的数据。
指针在C语言中非常重要,它可以用于动态分配内存、传递函数参数等。
2.3 结构体(struct)结构体是由不同类型的变量组成的集合。
在C语言中,结构体可以用来表示复杂的数据结构。
通过结构体,可以将多个不同类型的变量组织在一起,形成一个逻辑上的整体。
2.4 共用体(union)共用体是一种特殊的数据类型,可以在相同的内存位置存储不同的数据类型。
共用体的大小取决于最大的成员变量的大小。
2.5 枚举(enum)枚举用于定义一组命名的常量。
通过枚举,可以为一组相关的常量赋予有意义的名称,提高代码的可读性。
结构体共用体枚举
目录
§1 结构体
§2 结构数组
§3 结构指针
§4 结构与函数
§5 共用体
§6 枚举
§7 用typedef定义类型
结构体的组成
wang20 F 10#222
Zhang 19 M 16#321
定义一个通讯录结构* * *
变量完全相同。
main ( ) { char str[20];struct date
{ int
year, month, day; } today; /*结构变量名*/ 举例分析
struct xs
{ unsigned xh;
char *xm;
char xb;
float sx;
} li1=
{1202,“Liming”,’m’,85.5}; main( ) {……}
对静态存储的结构体
变量初始化,其定义
可放
在函数体内
作为结
;
作为数组元素的
基
是一个数组,数组中的每一
都是结构类型。
说明结构数组的方法是:先定义一个结构,然后用结构类型说明一个数组变量。
举例分析为记录100个人的基本情况。
可以说明一个有100个元素的数组。
每个元素的基类型为一个结构,在说明数组时可以写成:
struct person man [ 100 ];
确定的列
体结构,
访问结构数组中
又要遵守
访问
例:struct xs
{ unsigned xh;...... };
struct xs xscj[3]={{…},{…},{…}};
或:struct xs
{ unsigned xh;......
} xscj[3]={{…},{…},{…
}};
二、结构体数组的初始化
课堂作业根据下面定义,能打印出字母M的语句是:
struct person{ char name[9]; int age; };
struct person class[10]={ “W a n g”, 17,
“Z h a n g”,19,
“M i n g”, 18,
结构指针:存放结构类型数据的首地址,该指针可以指§3 结构指针
§3结构指针
一、指向结构变量的指针
main( )
{ struct {"04",90,80}};struct xscj { char *xh;
课堂作业有以下定义语句,则值为6的表达式是:
struct s
{ int k1;
struct s *k2;
};
static struct s a[3]={ 5,&a[1] ,7,&a[2] , 9 ,’\0’}, *ptr; ptr=&a[0];
§4 结构与函数§4 结构与函数
结构在函数间的传递有
三种传递方式
1. 结构成员作为函数的参数传递
2. 结构整体作为函数的参数传递
3. 结构指针作为函数的参数传递
函数参数可以是:常数、变量、数组、指针、字符
也可以是:结构体(传送成批数据)
传递方法:虚实结合、返回值、全局变量
合
一、结构成员的传递
float x,y; main( )
{struct
int i;
总结。