C语言学习笔记(3)

2019-04-23 20:23

? 如果是调用无参函数,则“实参表列”可以没有,但是括号不能省略。 ? 如果实参表列包含多个实参,则各参数间用逗号隔开。

5.2.1. 函数调用过程

通过return语句将函数值带回到主函数。 注意:

? 如果函数不需要返回值,则不需要return语句。这时函数的类型应该定义为void

类型。 ? 实参向形参的数据传递是“值传递”,单向传递,只能由实参传递给形参,而不能

有形参传递给实参。实参和形参在内存中占有不同的存储单元,实参无法得到形参的值。

5.2.2. 函数的返回值

? 函数的返回值是通过函数中的return语句获得的。

? 在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。 ? 如果函数值的类型和return语句中的表达式的值不一样,则以函数类型为准。即

函数类型决定返回值类型。

5.3. 数组作为函数参数

数组名作为函数的实参和形参,传递的是数组的第一个元素的地址。 数组元素可以作为函数的实参,不能作为形参。

5.4. 局部变量和全局变量

在函数内定义的变量时局部变量,在函数外定义的变量值全局变量,它的有效范围从定义变量的位置开始到本源文件结束。

5.5. 变量的储存方式和生存期

C语言程序设计中,储存方式分4种:自动的(auto)、静态的(static)、寄存器(register)、外部的(extern)。

6. 指针

6.1. 指针变量

6.1.1. 定义指针变量

定义指针变量的一般形式

类型名 *指针变量名

例如:

int * pointer_1, * pointer_2;

注意:

? 指针变量前面的“*”表示该变量的类型是指针型变量。指针变量名是pointer_1

和pointer_2,而不是 * pointer_1和 * pointer_2。 ? 一个变量的指针的含义包括两个方面,一个是以储存单元编号表示的地址,一个是

它指向的储存单元的数据类型。 ? 指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。

6.1.2. 引用指针变量

6.2. 通过指针引用数组

所谓的数组元素的指针就是数组元素的地址。

C语言中,数组名(不包括形参数组名,形参数组并不占据实际的储存单元),代表数组中首元素(即序列号为0的元素)的地址。因此,下面两个语句是等价的:

p = &a[0]; p = a;

6.2.1. 指针运算

1) 如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,

p-1指向数组中的上一个元素。注意,执行p+1时不是将p的值(地址)简单的加1,而是加上一个数组元素所占的字节数。 2) 如果p的初值为&a[0],则p+i和a+i就是数组元素的a[i]的地址。 3) *(p+i)和*(a+i)是p+i和a+i所指向的数组元素,即a[i]。

6.2.2. 通过指针引用数组元素

1) 下标法 2) 指针法

3) 指针变量指向数组元素 注意:

? *(p++) 与 *(p--):先取*p的值,然后是p加(减)1。 ? *( ++ p) 与 *( -- p):先使p加(减)1,再取*p的值。 ? ++(*p) 与 --(*p):表示p所指向的值加(减)1。

6.2.3. 用数组名作函数参数

如果有一个实参数组,要想在函数中改变此数组中的元素的值,实参和形参的对应关系有以下四种情况:

? 形参和实参都用数组名。 ? 实参用数组名,形参用指针变量。 ? 实参和形参都用指针变量。 ? 实参用指针变量,形参为数组变量。

6.3. 通过指针引用字符串

略(见附录表6)

6.4. 指向函数的指针

6.5. 返回指针值的函数

定义返回指针值的函数的一般形式

类型名 * 函数名(参数表列);

6.6. 指针数组和多重指针

6.7. 动态内存分配与指向它的指针变量

7. 建立自己才数据类型

7.1. 定义和使用结构体变量

C语言允许用户自己建立由不同类型组成的组合型的数据结构。 声明一个结构体类型的一般形式为 struct 结构体名 { 成员表列 };

引用结构体变量中成员的值: 结构体变量名.成员名 注意:

? “.”是成员运算符,在所有的运算符中优先级别最高。

? 不能企图输出结构体变量名来达到输出结构体变量所有成员的值,只能对结构体变

量的各个成员分别输入和输出。

7.2. 使用结构体数组

7.3. 结构体指针

结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存放在一个指针变量中,那么,这个指针变量就指向该结构体变量。

如果p指向一个结构体变量stu,以下3种用法等价:

? stu.成员名(如stu.num) ? (*p).成员名(如(*p).num) ? P->成员名(如p->num)

7.3.1. 指向结构体数组的指针

7.4. 用指针处理链表

链表是一种常见的重要的数据结构。它是动态地进行储存分配的一种数据结构。它根据需要开辟内存单元。

链表有一个头指针变量,它存放一个地址,该地址指向一个元素。链表中的每一个元素称为结点,每个结点都应该包括两个部分:用户需要的数据和下一个结点的地址。如下图所示。

链表的基本操作对链表的主要操作有以下几种: ? 建立链表; ? 结构的查找与输出; ? 插入一个结点; ? 删除一个结点;

7.5. 使用枚举类型

7.6. 用typedef声明信类型名

8. 对文件的输入输出

8.1. 文件的基础知识

程序文件:包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容是程序代码。

数据文件:文件的内容不是程序,而是提供程序运行时读写的数据。 定义一个指向文件类型数据的指针变量:

FILE * fp;

定义fp值是一个指向FILE类型数据的指针变量。可以使fp指向某一个文件信息区(是一个结构体变量),通过该文件信息区中的信息就能够访问该文件。也就是说,通过该文件

指针变量能够找到与它关联的文件。

8.2. 打开与关闭文件

常用下面方法打开一个文件: if((fp = fopen(“file.txt”, “r”)) == NULL) { }

有关文件使用方式:(见附录表7)

转义字符\\n控制字符\\t\\b\\r\\f特殊标点符号\\\\\\?\\“\\ddd\\xhh含义回车换行(光标移到下一行第一列)水平制表(光标移到下一个Tab位置)退格(光标移回到同一行前一列)回车(光标移到同一行第一列)换页(光标移到下一页开头)反斜杠字符“\\”单引号(撇号)字符?双引号字符“1到3位8进制数所代表的字符1到2位16进制数所代表的字符ASCII代码10981312923934printf(“cannot open this file \\n”); exit(0);

所有字符

C 3ìDò(project1¤3ì)′3?ìDò???t1′3?ìDò???t2……′3?ìDò???tn¤′?|àí?üá???è?±?á?éù?÷ˉêoy1……ˉêoynˉêoyê×2?ˉêoyì??2??±?á?éù?÷′Dó????

格式字符d, i整型uox, X字符型csf实型e, Eg, G格式作用格式化为有符号的十进制整数格式化为无符号的十进制整数格式化为无符号的八进制整数格式化为无符号的十六进制整数格式化为一个字符格式化为一个字符串格式化为小数形式的实数,隐含输出6位小数格式化为指数形式的实数,数字部分有6位小数选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0


C语言学习笔记(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:记叙文阅读训练(B卷)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: