第一章:程序=算法+数据结构
第五章-函数
模块化程序设计:将程序中划分成一定功能的模块,封装不同功能的模块,最后把所有函数组装起来。一个C语言程序由主函数和诺干个用户函数组成。
函数定义:
存储类型 数据类型 函数名(行参表){}
存储类型:extern:外部函数,可以被其他文件中的函数调用;static:内部函数,默认为外部函数
外部函数定义 f.cpp:extern
使用:entern f(int i)声明
即外部函数或全局变量,使用时已经要定义,然后再使用中再声明后使用。
数据类型:即返回值类型,如int,double,bool
函数名:C++支持重载,依据不同的参数列表,①参数数据类型②参数数量③参数顺序
形式参数表:可以是变量,数组,指针变量,或结构体,共用体类型。可以设置形参默认值,但注意必须要先无默认,后续皆要默认。在调用时,省略该带有默认值参数,后续皆应省略。如果是先声明后使用的话,声明时给出默认值,则定义时不用。
值传递方式:
①值传递:实参单向传递给形参,不会改变实参值。
②地址传递方式:双向传递,实参只能是变量地址,数组元素的地址,数组名。
若用数组名传递:调用格式:函数名(数组名);存储类型 数据类型 函数名(数据类型 数组名[数组长度])也可以不自鸣数组长度,但常需要在定义一个形参int n。实参形参大小可以不同。
返回值类型:只能返回整型,实形,字符型,结构体等,不可返回数组。return类型和函数定义不同时,将会自动转化为函数返回的类型
全局变量:外部全局变量和静态全局变量。C++访问全局变量:::A=
递归函数的设计:(1)递归结束条件 if (2)递归计算公式
一般结构:if() f(k=)
else return f(k-1)
第六章-指针
指针即地址,变量名和变量不一样。
变量与指针变量的区别:定义*p,使用*p,p的值时地址,p=&a。
指针没有赋值时为空。单目运算符从右往左
指针与一元数组:p=arr,p+i;
区别出:对调指针指向的内存单元的值。对调指针变量的指向
指针与二元数组:本质:a[i]+j;
在C语言中,变量名本身代表该函数的入口地址。如函数名,数组名。
指向指针的数组,指向函数的指针变量
第七章-构造数据类型
结构类型:
struct 结构体类型名
{定义变量
} 变量名,指针变量,初始化等;
指针变量的引用:p->name 或 (*p).name
动态分配内存:指针变量=new 类型 (初值) 撤销内存:delete 指针变量/[] 数组
共用体类型:union ,其余与结构体一样,选哟注意的是,共用体只能存入一个数据。
枚举类型:enum ,值为括号中的值。
类:类是一种特殊的结构体,public,private,protect.
构造函数:类的数据初始化 析构函数:~类名:删除时的操作。
typedef定义类型别名。
第八章:文件概述--
文件类型FILE 文件指针 FILE*p
打开:p=fopen(文件名即地址,操作)
操作:fputs(str/ch,p) fgets(str/ch,p),fread(对象,size,n,p) fwrite()
关闭:fclose(fp);
第九章-编译预处理
程序运行过程:预处理(预编译)--编译--连接--运行
预定义在编译之前,C语言中有三种预处理命令,分别是:①宏定义②文件包含③条件包含
9.1宏定义
所谓宏定义既是将一个标识符定义为一个字符串。宏名以大写组成用于区分。
9.1.1不带参数的宏定义--本质上为替换,在编译前将源代码中的宏名替换成字符串
定义格式:#define 宏名 字符串
①预处理命令不是语句,不用分号;,C语言预处理命令都是以\n为结尾。
②宏定义定义域为开始定义到程序结束,若要限定,用#undef 宏名
③可以嵌套定义,即一个宏定义中可以使用已经定义的宏。
注:宏定义只是替换,即使是表达式也只是带入。
使用宏的目的:①提高程序效率。修改数据是只需修改一个数据。例数组亦可以修改宏来需修改数组长度。
②提高代码通用性,不占用内存。
9.1.2带有参数的宏定义和引用
定义格式:#define 宏名(形参表)字符串 即定义一个公式。
①宏展开会增加代码长度,但降低运行时间,增加编译时间;函数缩短函数长度,但会增加运行时间。
②宏名无类型,调用函数只能得到一个返回值,但宏1可以设法得到多个。
eg:#define c(r,l,s,v) l= ;r= ;
③使用宏定义可以使打印格式简化。
9.2 文件包含处理--即一个源文件中包含另一个文件中的全部内容,在编译预处理时,将会用指定的内容替换该语句,成为源代码的一部分。
格式一:#include " 路径名或包名.h" 常用,系统首先会在当前层次然后再规定路径查找。
格式二:#include < > ;
可以包含多个需要的文件作为头文件。
9.3 条件编译--根据对源程序中某段程序中通过条件判断是否参加本次编译
命令格式一:如果已经定义了宏,则编译程序段一
#ifdef 宏名
程序段一;
#else
程序段二;
#endif
命令格式二:如果没有定义
#ifndef 宏名
程序段一;
#else
程序段二;
#endif
命令格式三:
#if (条件)
程序段一
#else
程序段二
#endif