C语言结构体变量与链表知识总结
大学c语言知识点笔记 大学c语言基础考试知识点

大学C语言知识点笔记C语言是一门非常重要的编程语言,广泛应用于各个领域。
在大学学习C语言是非常重要的一环,因为它是计算机科学和软件工程领域的基础。
本文将总结大学C语言基础考试知识点,希望能够帮助各位同学更好地备考。
1. 基本语法C语言的基本语法是了解C语言的第一步。
下面列举一些常见的基本语法知识点:•变量和数据类型:如何声明变量,各种数据类型的特点和使用方法。
•运算符:算术运算符、逻辑运算符、关系运算符等。
•控制结构:条件语句(if-else语句、switch语句)、循环语句(for 循环、while循环、do-while循环)。
•函数:函数的定义和调用,函数参数的传递。
•数组:一维数组和二维数组的定义和使用。
•指针:指针的基本概念,指针的声明和使用,指针与数组的关系。
•结构体:结构体的定义和使用。
2. 程序设计C语言的程序设计是非常重要的一环,它涉及到如何用C语言解决实际问题。
下面列举一些常见的程序设计知识点:•算法和流程图:如何使用伪代码描述算法,如何使用流程图表示问题的解决过程。
•函数的设计:如何设计一个函数,如何将一个大问题划分为多个小问题,如何通过函数的调用和返回来解决问题。
•递归:递归函数的概念、递归函数的实现和调用。
•文件的读写:如何打开文件、读取文件、写入文件。
•链表:链表的定义和基本操作,如何使用链表解决问题。
•排序和查找:各种排序算法(冒泡排序、快速排序、插入排序)和查找算法(二分查找、顺序查找)的原理和实现。
3. 内存管理C语言中的内存管理是非常重要的一部分,它直接影响到程序的性能和稳定性。
下面列举一些常见的内存管理知识点:•变量的作用域和生命周期:局部变量和全局变量的作用域范围和生命周期。
•内存分配和释放:动态内存分配的原理和使用方法,如何使用malloc函数来申请内存,如何使用free函数来释放内存。
•内存泄漏和野指针:内存泄漏和野指针的概念和原因,如何避免内存泄漏和野指针的产生。
C语言结构体使用之链表

C语⾔结构体使⽤之链表⽬录⼀、结构体的概念⼆、结构体的⽤法三、结构体数组和指针四、结构体指针五、包含结构体的结构体六、链表七、静态链表⼋、动态链表⼀、结构体的概念⽐如说学⽣的信息,包含了学⽣名称、学号、性别、年龄等信息,这些参数可能有些是数组型、字符型、整型、甚⾄是结构体类型的数据。
虽然这些都是不同类型的数据,但是这些都是⽤来表达学⽣信息的数据。
⼆、结构体的⽤法1、struct 结构体名称访问⽅法:结构体变量名.成员{undefined成员1;成员2;};2、 typedef struct{undefined成员1;成员2;}结构体名称;在中⼤型产品中⼀般⽤第2种,因为结构体多了以后通过别名的⽅式定义结构体变量能够⼤⼤提⾼代码可读性。
三、结构体数组和指针1、直接⽤struct声明⼀个结构体,然后在定义结构体数组,struct 结构体名称数组名[数组⼤⼩]2、⽤typedef struct声明⼀个结构体,并且为结构体重命名,通过重命名的⽅法定义结构体数组。
结构体重命名数组名[数组⼤⼩]四、结构体指针只要是存储在内存中的变量或者数组或函数编译器都会为他们分配⼀个地址,我们可以通过指针变量指向这个地址来访问地址⾥⾯的数,只要把指针变量定义成同数据类型就可以指向了,⽐如说要指向字符型变量就定义字符型指针变量,所以我们也可以定义结构体类型指针来指向它。
1、直接⽤struct声明⼀个结构体,然后在定义结构体指针,struct 结构体名称 *结构体指针变量名2、⽤typedef struct声明⼀个结构体,并且为结构体重命名,通过别名的⽅式定义结构体指针。
结构体别名 *结构体指针变量名结构体指针访问成员⽅法结构体指针变量名->成员名五、包含结构体的结构体学⽣信息包含姓名,学号,性别,出⼊⽇期等数据,⽽出⽣⽇期⼜包含年⽉⽇这3个成员,所以把出⽣⽇期单独声明⼀个结构体,那么学⽣这个结构体就包含出⽣⽇期这个结构体,这种就是包含结构体的结构体。
大一上学期c语言考试知识点

大一上学期c语言考试知识点C语言是一门广泛应用于程序设计和系统开发的计算机编程语言,作为大一上学期的课程之一,C语言的考试涉及了许多知识点。
下面将介绍C语言考试的主要知识点,以帮助您更好地复习和备考。
一、基本语法和数据类型1. 注释:C语言中的注释有两种形式:单行注释以"//"开头,多行注释以"/*"开头,以"*/"结束。
注释是用来解释代码的作用,不会被编译器执行。
2. 常量和变量:常量是不可修改的值,变量是可以修改的值。
在C语言中,有整型、字符型、浮点型等不同的数据类型,可以声明不同类型的变量来存储数据。
3. 运算符:C语言支持各种不同的运算符,包括算术运算符(+、-、*、/、%)、关系运算符(<、>、<=、>=、==、!=)、逻辑运算符(&&、||、!)、赋值运算符以及位运算符等。
4. 控制结构:C语言提供了条件语句(if-else)和循环语句(while、for)来控制程序的执行流程。
条件语句用于根据条件的真假来执行不同的代码块,循环语句用于重复执行一段代码。
5. 数组:数组是一种存储相同类型数据的集合,C语言中的数组是一块连续的内存空间,可以通过下标来访问数组中的元素。
数组的下标从0开始。
二、函数和指针1. 函数定义和调用:在C语言中,可以通过定义函数来封装一段代码,并在需要时通过函数名来调用执行该段代码。
函数可以有参数和返回值,也可以没有。
2. 数组和函数:在C语言中,数组可以作为函数的参数进行传递,函数也可以返回数组作为结果。
函数中可以通过指针来操作数组的元素。
3. 指针:指针是一种特殊的数据类型,用来存储变量的内存地址。
通过指针,可以直接访问和修改变量的值。
指针还可以进行算术运算,比如指针的加减操作。
4. 动态内存管理:C语言提供了动态内存分配的机制,通过调用malloc函数可以在程序运行时动态地分配内存空间,通过调用free函数可以释放已经分配的内存空间。
大一c语言期末必备知识点

大一c语言期末必备知识点C语言作为计算机科学和编程领域中最为基础和重要的编程语言之一,在大一的学习中扮演着重要的角色。
掌握C语言的核心知识点对于顺利通过期末考试至关重要。
本文将为大一同学总结C语言期末考试中的必备知识点,帮助大家提高复习效率和考试成绩。
知识点一:基本语法1. 注释:单行注释以"//"开头,多行注释以"/*"开头,以"*/"结尾。
2. 标识符:变量名、函数名、标签等的命名规则和规范。
3. 数据类型:包括整型、浮点型、字符型和指针型等。
4. 变量和常量:定义变量和常量的方式以及使用的规范。
5. 运算符:包括算术运算符、赋值运算符、逻辑运算符等。
6. 控制语句:包括条件语句(if-else语句)和循环语句(while循环、do-while循环和for循环)等。
7. 函数:函数的定义、函数的调用以及函数的返回值。
1. 数组:一维数组和多维数组的定义、初始化和使用等。
2. 指针:指针的概念、指针的运算、指针和数组的关系等。
3. 字符串:字符串的定义、字符串的操作和字符串的输入输出等。
知识点三:文件操作1. 文件指针:文件指针的定义、文件指针的定位等。
2. 文件读写:打开文件、关闭文件、读取文件内容、写入文件内容等。
知识点四:内存管理1. 动态内存分配:使用malloc、calloc和realloc等函数进行动态内存分配。
2. 内存释放:使用free函数释放动态分配的内存。
1. 结构体:结构体的定义、结构体数组和结构体指针等。
2. 链表:单链表和双链表的定义、插入节点、删除节点和遍历链表等。
知识点六:预处理指令1. 宏定义:使用#define进行宏定义。
2. 条件编译:使用#ifdef、#ifndef、#endif和#elif等来控制代码的编译。
知识点七:函数库1. 标准输入输出库:使用stdio.h中的函数进行输入输出操作。
2. 数学库函数:使用math.h中的函数进行数学计算。
c语言知识点大纲

c语言知识点大纲以下是C语言的知识点大纲,适用于初学者和中级水平的学习者:基础概念1.数据类型:整型、浮点型、字符型等2.变量和常量:声明、定义、初始化3.运算符:算术、关系、逻辑、赋值等4.控制流:条件语句(if-else)、循环语句(for、while、do-while)5.函数:声明、定义、调用、参数传递、递归6.数组:声明、初始化、访问、多维数组、数组与指针关系7.指针:地址、指针变量、指针运算、指针和数组、指针和函数8.字符串:字符数组、字符串处理函数、字符串常用操作9.结构体:定义、访问结构成员、结构体数组、结构体指针高级概念10.内存管理:动态内存分配((malloc、calloc、realloc、free)、内存泄漏和内存错误11.文件操作:文件读写、文件指针、文件操作函数12.预处理器:宏定义、条件编译、头文件13.位运算:位操作、位掩码、位运算符14.函数指针:指向函数的指针、回调函数高级主题15.数据结构:链表、栈、队列、树、图等16.算法:排序算法((冒泡排序、快速排序等)、搜索算法((线性搜索、二分搜索等)17.指针与内存:内存布局、内存对齐、指针算术18.多线程编程:线程、同步与互斥、线程安全性19.网络编程:Socket编程、TCP/IP、HTTP协议20.C标准库函数:常用函数库((stdio.h、stdlib.h、string.h(等)实践和应用21.项目开发:使用C语言构建小型项目或工具22.调试和优化:学习调试技巧、代码优化技巧以上列举的知识点可以帮助你建立起对C语言的基础认识并逐渐深入。
实践是掌握编程语言的关键,因此建议在学习过程中不断地练习并尝试编写各种类型的程序,以加深对C语言的理解和掌握。
c语言中链表的定义

c语言中链表的定义C语言中链表的定义链表是一种常用的数据结构,它是由一系列节点组成的,每个节点包含一个数据元素和一个指向下一个节点的指针。
链表可以用来存储任意类型的数据,而且它的大小可以动态地增加或减少,非常灵活。
在C语言中,链表的定义通常包括两个部分:节点结构体和链表结构体。
节点结构体定义如下:```typedef struct node {int data; // 数据元素struct node *next; // 指向下一个节点的指针} Node;```这里定义了一个名为Node的结构体,它包含两个成员变量:data和next。
其中,data用来存储节点的数据元素,next用来指向下一个节点的指针。
注意,这里的next是一个指向Node类型的指针,这样才能实现链表的连接。
链表结构体定义如下:```typedef struct list {Node *head; // 指向链表头节点的指针Node *tail; // 指向链表尾节点的指针int size; // 链表的大小} List;```这里定义了一个名为List的结构体,它包含三个成员变量:head、tail和size。
其中,head和tail分别指向链表的头节点和尾节点,size表示链表的大小。
通过这两个结构体的定义,我们就可以创建一个链表了。
下面是一个简单的例子:```int main() {List list = {NULL, NULL, 0}; // 初始化链表Node *node1 = (Node*)malloc(sizeof(Node)); // 创建第一个节点node1->data = 1; // 设置节点的数据元素node1->next = NULL; // 设置节点的指针list.head = node1; // 将节点1设置为链表的头节点list.tail = node1; // 将节点1设置为链表的尾节点list.size++; // 链表大小加1// 创建更多的节点...return 0;}```在这个例子中,我们首先初始化了一个空链表,然后创建了第一个节点,并将它设置为链表的头节点和尾节点。
c语言的知识点,难点

C语言的知识点和难点总结C语言是一种基础编程语言,广泛应用于系统软件、嵌入式系统、游戏开发等领域。
在学习C语言的过程中,我们会遇到一些知识点和难点。
下面,我们将对C语言的知识点和难点进行总结。
一、知识点:1.数据类型:C语言支持多种数据类型,包括整型、浮点型、字符型等。
这些数据类型的使用是C语言编程的基础,需要熟练掌握。
2.运算符:C语言提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符等。
理解并正确使用这些运算符是编写高效代码的关键。
3.控制结构:C语言中的控制结构包括条件语句(如if-else)、循环语句(如for、while)等。
掌握这些控制结构是实现程序逻辑的关键。
4.函数:函数是C语言的基本模块,用于实现特定的功能。
了解如何定义函数、调用函数以及传递参数是十分重要的。
5.指针:指针是C语言的特色之一,它允许我们直接访问内存地址。
理解指针的概念和用法对于深入学习C语言至关重要。
6.结构体与联合:结构体和联合是C语言中处理复杂数据结构的重要工具。
通过它们,我们可以组合不同类型的数据并进行操作。
二、难点:1.指针操作:由于指针直接涉及内存地址,因此对初学者来说可能较难理解。
掌握指针的基本概念、声明、初始化和使用是C语言学习的难点之一。
2.内存管理:在C语言中,程序员需要直接管理内存。
如何正确地分配和释放内存是避免内存泄漏和段错误的关键,也是学习C语言的难点。
3.深度递归:深度递归可能导致栈溢出或性能问题,因此在实际应用中需要谨慎处理。
理解递归原理并在合适的场景下应用是C语言学习的一个难点。
4.多线程编程:多线程编程涉及线程的创建、同步和通信等复杂概念,对于初学者来说可能较难掌握。
理解多线程的原理和应用是多线程编程的难点之一。
用C语言结构体类型指针实现数据结构链表操作

一
{ 成员表列 } 变量名表列 ; 方法3 : 直接定义结构体类型变量 。 般形 式 : s t r u c t { 成 员表列 ; } 变量名表 列 ; ( 3 ) 结构体类 型变量 的引用 在定义 了结构体类型变量之后 , 不可 以对其整体进行 引用 , 而 只能对结构体变量 中的各个成员分 别进行 引用 。 引用 的方 式为 : 结 构体变量名 . 成员名 , 其 中“ . ” 是成员运算符 , 它在所有 的运算符 中 优先级最高 。 例如: s t u d e n t 1 . h u m表 示 s t u d e n t 1 变 量 中的 n u m成 员 ,  ̄s t u - d e n t l 的n u m( 学号) 项, 可 以对成员项进行运算和输入输出等引用。
④
设 计 开发
用 C语言结构体类型指针实现数据结构链表操作
王 敬
f 天津市红桥 区职工大学 天津 3 0 0 1 3 1 )
摘要: 本 文介绍 了结构 体 类型 的基 本原 理及 定 义方法 , 利 用结构体 类型 变量作 为链表 中的数据 项 比较 符合 实际应 用 中的需要 。 因此 , 文章 分别 介 绍 了定 义结构 体 指针 的方 法和建 立 结构体 类 型结 点的 单 向链表 的具 体描 述 。 关键词 : 结构体 链 表 指针 中图分 类号 : T P 3 1 2 文献 标识 码: A 文章 编号 : 1 0 0 7 — 9 4 1 6 ( 2 0 1 3 ) 0 4 — 0 1 6 5 — 0 2
1 结构体类型
1 . 1概 述
在学 习了C 语言基本类型数据之后 , 在处理一些 实际问题的时 候, 往往需要将多种基本类型数据组合成一个有机整体 , 以便一起 引用 , 整体 中的数据相互联系 , 形成一组有特殊 含义 的数据 , 这样 的 个 组合 项被 称为结构体。 例如 : 一个学生信息就可 以看成一个结 构体 , 学生信息包括学号、 姓名、 性别、 年龄、 成绩 、 籍贯等 内容 , 每一 项内容又是一个基 本类型变量 , 可 以分别定义为学号 ( 整型) , 姓名 ( 字符串) 、 性别( 字符型) 、 年龄( 整型) 、 成绩( 单精度实型) 、 籍贯 ( 字符 串) 。 将这些有特殊含义的变量放在一个结构体中 , 相当于高级语言 中的“ 记录” 。 数据结 构链表 中的每 一个数据 项不一定都是单一数 据, 大多数情 况下都是一个组合项做为一个数据项 , 这时就需要用 到结构体做数 据项 。 1 . 2结 构 体 类 型 变 量 定 义 ( 1 ) 声明结构体类 型的一般 形式 : s t r u c t 结构体名 2结构体类型数据的指针 { 成 员表列 } ; 2 . 1定 义指 向 结构体 变量 的指 针 其 中, “ 结构体名” 用作结构体类型的标志 , “ 成 员表 列” 是该结 首 先声 明一 个 结 构 体 类型 s t r u c t s t u d e n t , 然 后 定 义一 个 s t r u c t 构体 中的成员表列 , 由它们组成一个结构体 。 例如 : 建立一个学员信 S t u d e n t 类型 的变量s t u d e n t 1 和指针P , 指针P 指向s t u d nt e 1 的首地址 , 息的结构 体 , 如下所示 。 如 下所 示 。 s t r u c t s t u d e n t ma i n () {i n t n u m; , 号≈ , {s t r u c t s t u d e n t c h a r n a me [ 2 0 】 ; / 姓名 / {i n t n u m; / 学号} / h a c r S e X; / { 性别} / ha c r n a me [ 2 0 】 ;/ } 姓 名 / i nt a ge; , 辱 , c h a r s e x ; / 性 别} / lo f a t s c o r e ; / } 成绩} / i n t a g e , 年 , c h a r a d d r [ 2 0 ] ; / 籍贯 / l f o a t s c o r e ; / } 成绩} / } ; c h a r a d d r [ 2 0 ] ;/ } 籍 贯 / ( 2 ) 定义结 构体类型变量的方法 } ; 方法 1 : 先声 明结构 体类型再定义变量名 。 s t r u c t s t u d e n t s t u d e n t 1 ; / 定义结构体类型变量s t u —
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.3 结构体类型数组 11.3.1 结构体数组的定义与使用 结构体是一种新的数据类型,同样可以有结构体数组。 1、结构体数组的定义 结构体数组就是具有相同结构体类型的变量集合。 Struct 结构体名 { 类型标识符 1 成员名 1; 类型标识符 2 成员名 2; …… 类型标识符 n 成员名 n; }数组名[整型常量表达式];
注意: (1)如果 p 的初值为 stu,即指向第一个元素,则 p+1 后指向下一个元素。请区别:(++p)->num
和(p++)->num (2)指针 p 已定义为指向 struct student 类型的数据,它只能指向该结构体类型数据,而不能指 向一元素的某以成员(即 p 的地址不能是成员的地址)。如下面的赋值是错误的:p=&stu.num 编译时将给出“警告”信息,表示地址的类型不匹配。不要认为反正 p 是存放地址的,可以 将任何地址赋给它。
【例 11.1】候选人得票的统计。设有三个候选人,每次输入一个得票的候选人名字,要求最 后输出各人得票结果。
Struct person { Char name[20]; Int count; }leader[3]={“Zhang”,0,”Li”,0,”Wang”,0};
Main() { Int i,j; Char leader_name[20]; For(i=1;i<=10;i++){
11.4 结构体类型指针 一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以定义一个指针变量,用 来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。 11.4.1 指向结构体变量的指针 1.指向一个结构体变量的指针定义形式:
Struct 结构体名 *指针变量名; 例如: Struct student { Long int num; Char name[20]; Char sex; Float score; }; Struct student *pstu,stu; Pstu=&stu;
Struct date { Int month; Int day; Int year; }; Struct person { Float num; Char name[20]; Char sex; Int age; Struct date birthday; Char address[10]; };
11.2.2 结构体变量的使用 结构体是一种新的数据类型,因此结构体变量也可以像其它类型的变量一样赋值、运算,不 同的是结构体变量以成员作为基本变量。 结构体成员的表示方式为:结构体变量名.成员名 其中的圆点运算符称为成员运算符,它的运算级别最高。 如果将“结构体变量名.成员名”看成一个整体,则这个整体的数据类型与结构体中该成员 的数据类型相同,这样就可以像前面所讲的变量那样使用,但应遵循以下规则: (1)不能将一个结构体变量作为一个整体进行输入和输出,而只能对结构体变量中的各个成 员分别进行输入和输出。 Struct date { Int month; Int day; Itn year; }day; Scanf(“%d%d%d”,day);(错误) Scanf(“%d%d%d”,&day.year,&day.month,&day.day);(正确) Printf(“%d%d%d”,day);(错误) Printf(“%d%d%d”,day.year,day.month,day.day);(正确) (2)如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最底 的一级的成员,只能对最底级的成员进行赋值或存取运算。 Struct date { Int month; Int day; Int year; };
加入要定义一个班级 100 个同学的学号、姓名、性别、年龄,可以定义成一个结构体数组。 如下所示: Struct{ Long num; Char name[20]; Char sex;
Int age; }stu[100]; 11.3.2 结构体数组的初始化 一般形式是在定义的数组后面加上={初始值表列}; Struct student { Long num; Char name[20]; Char sex; Int age; Float score; Char add[5]; }stu[3]={
11.2 结构体类型变量 11.2.1 结构体类型变量的定义 1.先定义结构体类型,再定义结构体变量 形式: Struct 结构体名
{类型标识符 1 成员名 1; 类型标识符 2 成员名 2; …… 类型标识符 n 成员名 n;
}; Struct 结构体名 变量名表; 例如: Struct student {char name[20];
{101,”WGJ”,’M’,28,88.5,”CS”} {102,”DYH”,’F’,26,88.0,”CS”} {103,”DYC”,’M’,24,78.5,”CS”} };
11.3.3 结构体数组的使用 结构体数组成员的访问十一数组元素为结构体变量的,其形式为:结构体数组元素名.成员 名 如:stu[2].age
2.由指向结构体变量的指针变量引用结构体成员的形式为: (*指针变量).成员名 或指针变量名->成员名
->为指向运算符 如:上面示例用指针变量引用其成员的方式为: (*pstu).num , (*pstu).name (*pstu).sex , (*pstu).score
可以等价表示为: Pstu->num,pstu->name,pstu->sex,pstu->score
3.用匿名形式直接定义结构体类型变量 形式: Struct { 类型标识符 1 成员名 1; 类型标识符 2 成员名 2; …… 类型标识符 n 成员名 n; }变量名表; 例如: Struct
{ Char naem[20]; Char sex; Int age; Float score; }stu1,stu2;
结构体与链表
11.1 结构体类型的定义 结构体是由 C 语言中的基本数据类型构成的、并用一个标识符来命名的各种变量的组合, 其中可以使用不同的数据类型。
1.结构体类型的定义 Struct 结构体名 { 类型标识符 1 成员名 1; 类型标识符 2 成员名 2; …… 类型标识符 n 成员名 n; }; Struct 结构体名——结构体类型名
(3)对结构体变量的成员可以像同类型普通变量一样进行各种运算。
11.2.3 结构体变量的初始化与存储 1.结构体变量的初始化:在定义结构体变量的同时给它赋以初值。 Struct student { Char name[20]; Char sex; Int age; Float score; }stu1,stu2={“wangwu”,’m’,20,88.5};
Struct student { Long num; Char naem[20]; Char sex; Int age; Struct date birthday; Char depart[10]; }stu1;
如:stu1.birthday.year=2004; Stu1.birthday.month=12;
并非所有成员变量的内存总和
事实上,所有数据类型在内存中都是从偶数地址开始存放的且结构所占的实际空间一般是按 照机器字长对齐的不同编译器、平台,对齐方式会有变化 结构体变量的成员存储对齐规则是与机器相关的 具有特定数据类型的数据项大小也是与机器相关的 所以一个结构体在内存中的存储格式也是与机器相关的
3.结构体变量存储分配示意图
Scanf(“%s”,leader_name); For(j=0;j<3;j++)
If(strcmp(leader_name,leader[j].name)==0) Leader[j].count++; } Printf(“\n”); For(i=0;i<3;i++) Printf(“%5s:%d\n”,leader[i].name,leader[i].count); }
2.关于结构体类型的说明: (1)“struct 结构体名”是一个类型名,它和 int、float 等作用一样可以用来定义变量。 (2)结构体名是结构体的标识符不是变量名,也不是类型名。 (3)构成结构体的每一个类型变量称为结构体成员,它像数组 (4)结构体中的各成员既可以属于不同的类型,也可以属于相同的类型。 (5)成员也可以是一个结构体类型,如:
{10101,”zhang”,’m’,18}, {10102,”li”,’m’,19}, {10103,”wang”,’f’,20} }; Main(){ Struct student *p; Printf(“ sex age\n”); For(p=stu;p<stu+3;p++) Printf(“%5d%-20s%2c%4d\n”,p->num,p->name,p->sex,p->age); }
例 11.2 比较结构体成员的几种引用方式 #include “stdio.h” Main(){ Struct student{
Long int num; Char name[20]; Char sex; Float score; }; Struct student stu_1; Struct student *p; P=&stu_1; Stu_1.num=200601; Strcpy(stu_,”liping”); Stu_1.sex=’M’; Stu_1.score=811.5; Printf(“No.:%ld\nname:%ssex:%c\nscore:%f\n”,stu_1.num,sut_,stu_1.score);
2.结构体变量所占内存的字节数 ·struct 类型用内存字节数=? ·是所有成员变量的内存总和吗? 用运算符 sizeof 获得结构体大小 Sizeof(变量或表达式) Sizeof(类型)