1、数组传参中形参的秘密
第三行:形参中不存在数组的概念,即便是中括号约定了数组的大小,也无效。
第二十行:传递的是一个地址,是数组的首地址。
数组名代表了整个数组的首地址。
第二十一行:第一个元素的地址也是数组的首地址。
(补充):指针占了八个字节。在操作系统中用八个字节,表示一个地址。
2、数组名当作函数实际参数(关于地址的)
首先是普通变量当函数实际参数
(数值传递,操作的是不同的内存空间)
数组名当作函数实际参数呢?
(操作的是相同的地址空间,数组名当作实参,到底传了什么?(地址))
也可以这么写
结果一样的
3、计算不同班级学生的平均分
//第26行:总分这个变量一定要手动初始化为0,默认值可能是一个大数影响结果
4、二维数组
合法写法: int arr[2][3]
合法写法 : int arr[][3]
不合法写法 : int arr[][]
不合法写法 : int arr[2][]
特殊的一维数组,每个元素又是一个数组,大小确定
注意传参的时候的形式是否合法
结果如下
5、外部变量和全局变量
全局变量:写在所有函数之前的外部变量
优点及缺点:程序员编程便捷,但有隐藏风险,所有函数都可以操作这个变量
(在10行和11行之前程序对p,q不可见)
6、全局变量的实战
(当我们没有办法在一个函数调用中,返回多项需要的数据的时候,(想要返回多项结果),被迫使用全局变量)
//函数调用的目的:调用者通过调用函数获得某些结果。
//函数强调的是功能性的封装,供调用者使用来改变调用者当中的一些数据
作业:1、要求输入十个数,找出最大数和最大数的下标
结果如下
2、封装冒泡排序法的函数
结果如下
(引用的图像)
(第一个和第二个比,第二个和第三个比。。。)
3、封装选择排序法的函数
(第一个和第二个比,第一个和第三个比。。。。)
结果如下