1. 遍历数组
-
遍历数组:通过循环的方式来把数组中的每个元素数据进行查询
-
使用for循环遍历数组更多一些
-
数组长度计算:
-
数组总字节数/元素的数据类型的字节数
-
数组总字节数/第一个元素的字节数
-
-
数组遍历相关的案例:求和,求平均值,求最大值,求最小值,冒泡排序
2. 字符数组
-
字符数组:多个字符组成的数组,可以看成是字符串
-
字符数组的结尾应该使用\0标识结束,\0是空字符,没有任何显示
-
字符数组的五种定义方式:
cs方式1:设置了长度后,手动在结尾处添加\0 char chs1[5]={'a','b','c','d','\0'}; 方式2:设置了长度后,编译器会在末尾添加一个\0,标识结束 char chs2[5]={'a','b','c','d'}; 方式3:没有设置长度,系统也不会在结尾处添加\0 char chs3[]={'a','b','c'}; 注意情况:设置了长度,里面的字符个数和长度一致,没有手动添加\0,编译器也不会在结尾处自动的添加\0 char chs0[5]={'a','b','c','d','e'}; 方式4: char chs4[]={"abcde"}; 方式5: char chs5[]="abcdef";
-
字符数组的遍历和展示
-
字符数组也是数组,所以,可以使用for循环进行遍历
-
此时如果使用sizeof计算字符数组的长度的时候,计算的是实际的字节数,也就是说如果用这种方式来遍历数组,此时会多遍历一次,后面会使用字符串相关的函数来计算字符数组的长度,然后再遍历更加合适
-
字符数组可以看成是字符串,所以,可以使用%s来显示整个字符数组的数据内容
-
3. 多维数组
-
多维数组:数组中的元素如果还是数组,此时该数组就可以看成是多维数组
-
多维数组分为:二维数组,三维数组,四维数组...
-
二维数组:一个数组中的元素如果还是一个数组,此时该数组可以看成是多维数组中的二维数组
-
一维数组(普通数组):使用一个索引
-
二维数组:使用两个索引,两个索引也可以理解为行下标和列下标
-
二维数组的定义方式:
cs方式1: int nums[2][2]; nums[0][0] = 10; nums[0][1] = 20; nums[1][0] = 30; nums[1][1] = 40; 方式2: int nums[2][3]={{1,2,3},{4,5,6}}; 方式3: int nums[2][2]={1,2,3,4}; 方式4: int nums[][2]={1,2,3,4};
-
二维数组的行下标和列下标的计算
cs行 = 二维数组的总字节数/第一个行的总字节数 列 = 行的总字节数/第一行第一列的字节数 列 = 行的总字节数/数组类型的字节数
-
二维数组的遍历使用的是嵌套for循环(双层for循环),外层循环遍历的是行,内层循环遍历的是列
-
二维数组在内存中存储也是连续的,和一维数组存储方式一样,所以,二维数组的本质其实还是一维数组
4. 函数相关的概念
-
函数:就是一些重用代码的封装,一个函数就是一个功能
-
函数作用:代码的重用,提升可维护性
-
为什么需要使用函数
-
程序设计的过程中,在某些位置,或者是特定的情况下,有一些代码需要重复书写或者是使用,此时可以把这些重复使用的代码进行封装,形成一个函数,在需要的位置直接使用该函数即可
为了方便使用代码,或者是方便维护程序
-
-
一个c程序可以由一个.c文件或者是多个.c文件组成
一个.c文件是由一个或者多个函数组成.所以,函数可以看成是一个.c文件的基本组成单位
c中函数之间是可以相互调用的,主函数只能有一个,其他函数中不允许调用主函数
5. 函数的定义和函数调用
-
函数如果要使用,首先需要先定义函数,然后调用即可
-
函数定义:
cs返回值类型名 函数名([参数列表]){ 函数体/代码块 return ; }
-
函数调用:
cs函数名([参数列表]);
6. 函数的参数和返回值
-
函数参数:分为形参和实参
-
形参:函数在声明或者定义的时候,函数名字后面小括号中声明的变量就是形参
-
实参:函数在调用或者使用的时候,函数名字后面小括号中传入的变量或者数据就是实参
-
-
返回值:如果一个函数在定义的时候,返回值类型是void,代表的是空类型,就意味着该函数没有具体的返回值
-
如果一个函数在定义的时候,返回值类型不是void,并且函数内部使用return,后面还有具体的数据,那么该函数有返回值
-
如果一个函数在定义的时候,返回值类型不是void,函数内部没有return,或者说有return,但是后面没有具体的数据,此时该函数没有具体的返回值,可以说有返回值,但是不明确,如果此时外部接收存储该返回值数据就是一个垃圾值,或者叫随机值,没有意义
7. 函数的四种不同表现形式
-
无参数无返回值的函数:
-
有参数无返回值的函数:
-
无参数有返回值的函数:
-
有参数有返回值的函数:
8. 主函数的理解
-
主函数:就是一个函数,是程序的主入口,有且只能有一个,主函数中可以调用其他函数,其他函数不能调用主函数,主函数中不能调用自己。
-
主函数的返回值是int类型,默认内部应该使用return返回0,表示成功,非0则表示失败,建议自己手动书写,如果不写,编译器默认会添加,
-
主函数的参数有两个,第一个argc,第二个argv,argc表示参数的个数,argv表示参数值,是一个数组,可以通过命令的方式执行xxx.exe程序,并且在后面传入参数到该程序中
9 . 函数原型
-
函数原型:指的是函数原型语法,分为函数声明和函数定义
-
函数原型的作用:解决先调用函数,后声明函数出现的警告信息
-
如果先有函数声明(定义/实现),后调用函数,其实可以不需要声明函数原型
-
函数原型声明:三种方式:
cs方式1:函数头部后面加分号 void f1(int a); 或者 int f2(int a,int b); 简写方式: void f1(int); 或者 int f2(int,int); 方式2:直接定义一个函数 void f2(int a){ 函数体 } 方式3:函数头部,参数列表中可以使用...表示多个参数 void f3(char num,...); 更加专业一些:实际上方式1,才算是真正的函数原型声明写法
10. 作用域
-
作用域:变量的使用或访问范围
-
作用域分为:全局作用域,局部作用域,块级作用域
-
全局变量:在函数外部或者在函数外部的上面声明的变量
-
局部变量:在函数内部声明的变量
-
块级变量:在大括号内部声明的变量
-
全局作用域:全局变量的使用范围,整个文件
-
局部作用域:局部变量的使用范围,整个函数
-
块级作用域:块级变量的使用范围,整个大括号内部
-
全局变量/全局常量/全局数组如果声明了,没有初始化,默认是0
-
局部变量/局部常量/局部数组如果声明了,没有初始化,默认是垃圾值