在一个C 程序中,有且只能有一个名为main 的函数,该函数称为主函数。程序执行始终是始于主函数,结束于主函数。C 程序中的每个语句都是以分号(;)作为语句结束符的。......
2025-09-30
除了变量作为函数的参数之外,数组是特殊变量的集合,也可以作为函数的参数。首先数组元素可以作为实参,其用法与变量完全相同。其次,数组名也可以作为实参和形参,函数调用时传送的是数组的地址。
1.数组名作为函数参数
【例5.6】设有一维数组score,存放10 个学生的成绩,求平均成绩。
程序运行结果如图5.5 所示。
图5.5 程序运行结果
说明:
(1)用数组名作函数参数,应该在主调函数和被调用函数分别定义数组,例中array 是形参数组名,score 是实参数组名,分别在其所在函数中定义,不能只在一方定义。
(2)实参数组与形参数组类型应一致(譬如float 型),如果不一致,将出错。
(3)在被调用函数中声明了形参数组的大小为10,但实际上不起作用,因为C 编译程序对形参数组的大小不做检查,只是将实参数组的首地址传送给形参数组。因此,score[n]和array[n]实际上指的是同一单元。
(4)形参数组也可以不指定大小,只在定义数组时在数组名后面跟一个方括号。
为了被调用函数处理数组元素的需要,可以另设一个参数,传送数组元素的个数,如例题5.7。
【例5.7】给定一组数,计算其平均值。
程序运行结果如图5.6 所示。
图5.6 程序运行结果
可以看出,两次调用average 函数时,实参数组元素个数是不同的,在第一次调用时实参5 传送给形参n;第2 次调用时,实参10 传送给形参n。(https://www.chuimin.cn)
【例5.8】给一组数据中第i 个位置插入数据x。
程序运行结果如图5.7 所示。
图5.7 程序运行结果
2.用多维数组名作为函数参数
也可以用多维数组名作为实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。譬如int array[3][10]和int array[][10],二者合法等价。但是不能省略第二维的大小说明。因为不说明列数,系统无法确定多少行多少列。下面写法是错误的:
而形参数组第一维的大小可以是任意的,因为C 编译程序不检查第一维的大小。
【例5.9】有一个3×4 的矩阵,求所有元素中的最大值。
算法分析:先使变量max 的初值为矩阵中第一个元素的值,然后将矩阵中各个元素的值与max 相比,每次比较后都把数值大的元素存入max 中。全部元素比较完后,max 的值就是所有元素的最大值。程序如下:
程序运行结果如图5.8 所示。
图5.8 程序运行结果
用数组名作为函数参数时应注意以下几点:
(1)形参数组和实参数组的类型必须一致。
(2)形参数组和实参数组的长度可以不相同,因为在调用时只传送首地址而不检查形参数组的长度。当形参数组的长度与实参数组不一致时,虽不出现语法错误,但是执行结果将与实际不符,应予以注意。
相关文章
在一个C 程序中,有且只能有一个名为main 的函数,该函数称为主函数。程序执行始终是始于主函数,结束于主函数。C 程序中的每个语句都是以分号(;)作为语句结束符的。......
2025-09-30
在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2025-09-30
图4.18程序运行结果设有3 个学生的4 门课成绩,求每个学生4 门课程的总评成绩、3 个学生每门课程的平均成绩。图4.19程序运行结果挑战节目主持人。图4.20程序运行结果联合国排名是以国家名的英文字母排序,社会上也常以姓氏的汉语拼音字母排序。就这样,用字符数组min 依次与新输入的字符串比较,直到输入字符串为空时为止。图4.21程序运行结果......
2025-09-30
图4.9字符数组初始化状态③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。图4.11程序运行结果4.字符串字符串:是用双引号括起来的字符序列,也称为字符串常量。图4.13存储状态用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。......
2025-09-30
鉴于目前各种计算机系统的C 语言都一致把这类标识符作为固定的库函数或预编译处理中的专门命令使用,因此,为了避免误解,建议用户不要把这类预定义标识符另作他用。用户标识符的命名有以下命名规则,符合规则的命名是合法的,反之,命名是不合法的。......
2025-09-30
图4.3二维数组编译程序将开辟3×4=12 个连续存储单元,按行连续存放数组a 的12 个元素。图4.4二维数组在存储器中的存储顺序2.二维数组的初始化二维数组初始化和一维数组初始化的方法基本相同,也可以在定义时赋以初值。不分行给二维数组所有元素赋以初值,即所有元素的初值写在同一对大括号内。......
2025-09-30
switch 语句是多分支选择语句。程序运行结果:说明:例3.12 中出现了break 语句,在C 语言中,可以利用break 语句终止该语句下面所有case 子句和default 子句的执行,直接跳出switch 语句。......
2025-09-30
相关推荐