第六章:常量、宏、枚举及函数 第七章:数组、字符串

来源:互联网 发布:教育部网络培训中心 编辑:程序博客网 时间:2024/05/29 09:27

这周是第二周,本周学习了第六章、第七章以及第八章的前半部分。

第六章:常量、宏、枚举及函数

 

常量的定义:

1.宏定义:#define 常量名 值    例如:#define PI 3.14

PS:常量名大写,没有赋值符号(=),没有分号结尾

2.const定义:const 数据类型 常量名 =值;例如:const int count = 5;

 

枚举:

1.    枚举的声明定义:enum 枚举名{元素};例如:enum today{mom,thus,…};

2.    枚举的使用: enum day= mom;

3.    枚举默认从0开始,也可以给它定义初始值,后面的元素在前面元素的值加1.

 

函数:

1.    什么叫函数:可以实现特定功能的代码块。

2.    函数声明:返回值类型 函数名(形式参数);例如:int fun(int x, int y);

3.    函数实现:返回值类型 函数名(形式参数){函数体}

a)      例如:int fun (intx, int y){函数体} (ps:有返回值类型的函数,需要返回值,且类型相同)

4.    参数

a)      形式参数(形参):函数声明实现中带的参数。

b)     实际参数(实数):函数调用时使用。

5.    变量

a)      局部变量:

                     i.           作用域:从声明开始,到该函数结束被释放。(在条件分支或者循环内:从声明开始,到分支或循环结束被释放)。

                   ii.           存储类型:

1.       auto(自动型):默认形式,从声明到函数结束被释放。

2.       static(静态型):第一次被声明,之后被保持,直到程序结束被释放。

3.       register(寄存器型):类似于auto,有些编译器不支持。

                  iii.            

b)     全局变量:

                     i.           作用域:从声明开始,变量后面到函数都可以使用,程序结束被释放。

                   ii.           存储类型:

1.       无修饰符:作用在本类,且可以被扩展到其他类中使用。

2.       static(静态型):全局静态变量,不可以被扩展。

3.       extern(扩展型):从其它类中扩展变量到本类中使用。

6.    函数递归

a)      递归:就是自己调用自己本身叫递归。

b)     直接递归:自己调用自己本身。

c)      间接递归:自己调用别人,别人调用自己本身。

d)     迭代(循环)与递归

                     i.           递归代码精简,但消耗系统资源大。

                   ii.           可以递归,也可以迭代的,使用迭代。

 

 

宏定义函数:

1.定义:#define 宏定义函数名 函数名或表达式

例如:#define PRINTF(x)(x)*(x)

PS:宏定义函数,要注意,后面的表达式的每个变量需要用括号括起来

 

 

第七章:数组、字符串

一维数组:

1.一维数组

a)      声明赋值:数据类型 数组名[数组大小]; 例如:int arr[] = {1,2,3,4,5,6};

b)     数组名就是数组首元素的地址

c)      数组的访问:数组名[下标];例如:arr[0] =  1;//数组第一个元素。数组的下标是从0 开始,到元素个数减1结束。

2.    数组作为函数参数:

a)      作为形式参数时,数组的大小可以省略。例如:void fun(int a[]);

b)     作为实际参数时,只需要传入数组名既可。例如:fun (arr);

c)      数组作为参数,在函数内部改变数组的值时,函数外作为实际参数的数组的值也会跟着改变。

字符串:

1.字符串

d)     字符串也叫字符数组,是由n个字符组成的。

e)      声明定义:char  str[大小] = “abcd”; 或 char str[] ={‘a’,’b’,’c’,’\0’}

f)       字符串的访问类似数组。格式化符号:%c、%s。

g)      字符串结束标志符号:’\0’。

h)     字符串的输入

函数

作用

Getchar()

输入单个字符

Putchar()

输出单个字符

Scanf()

输入字符(%s)

Printf()

输出字符 (%s,%c)

Gets()

输入字符串

Puts()

输出字符串

 

i)       字符串函数

函数

作用

Strcpy(str1,str2)

函数复制,将str2复制到str1中,且str1的大小要大于等于str2

Strcat(str1,str2)

将str2写入到str1的尾部

Strlen(str)

计算字符串的长度

Strcmp(str1,str2)

字符串的比较,从字符串的第一个字符开始比较,比较字符的ASCII码值,str1大于str2,返回大于0,相等返回0,小,返回小于0

 

j)        

二维数组

1.    声明赋值:

a)      int arr[2][3] ={“1,2,3”,”4,5,6”};

b)     int arr[2][3] = {1,2,3,4,5,6};

2.    访问:arr[0][0]; //前面表示行,后面表示列,访问也是通过下标访问。

3.    二维数组就是一维数组的数组。

4.    二维数组作为参数时,行可以省略,但列不能省略

a)      例如:void fun(intarr[][3]);

 

 

第七章易错点:

1.    声明数组时,忘记在数组名称后面加中括号

2.    使用数组时,访问的下标超出数组的大小,并不存在数组

3.    忘记给数组初始化,就使用数组。

4.    字符串忘记考虑结束符 ’\0’

5.    用系统函数,没有添加函数所在的库的头文件:string.hstype.hstdilb.h



0 0