全站搜索未启用
跳到主要内容

文本一:函数的定义

程序中的函数有:函数定义、声明、调用这3种使用情况。

使用系统函数只需声明和调用,不需用户定义。

1. 函数定义格式

[<有效范围>] <返回值类型> <函数名> (<参数表>)<函数体>

有效范围:使用的保留字:extern或static。

extern为全局函数,static局部函数。

全局函数作用于整个程序,局部函数只作用于所在的程序文件。

返回值类型:给出函数返回值的类型,当使用保留字void作为类型名时,则不需要返回值。

函数名:是一个符合C语言命名规定的标识符。通常用函数名反映该函数的功能。如用ValueSumM表示数值求和,Count表示统计。

参数表:又称形式参数表,它可以为空,可以包含一个或多个参数,每个参数由参数类型和参数名组成。

函数体:是一条复合语句。

函数头:函数体之前的部分称为函数头,又称为函数原型。

2. 函数定义格式举例

(1) void f1() {...}

(2) static void f2(int x) {...}

(3) int f3(int x,int* p) {...}

(4) char* f4(char a[]){...}//数组参数char a[]等价于char* a

(5) void f5(float c[][N], int m) {...}

//二维数组参数c,由N给出列数,由参数m给出行数。

3. 函数定义和使用的几点说明

(1) 函数定义位置:全局函数定义允许出现在整个程序的任一个程序文件内;局部函数定义只能出现在被声明和调用的同一个程序文件内。

(2) 函数原型声明语句:在利用函数调用表达式调用一个函数时,必须在此之前出现有该函数的原型声明语句或函数定义。

(3) 函数的常量形参:即在一般的形参定义前加上const修饰。

void f6(const float x, float y) {...}//x常量形参,y一般形参

//在函数体内x的值只能被读取,不能被修改

void f7(const char* a, char* b) {...}//a常量形参,b一般形参

//a所指对象只能读取不能修改,*a='d'错误,*b='d'可以

(4) 一维数组参数说明的两种格式

第1种:<数据类型> <数组名>[]

第2种:<数据类型> *<指针变量名>

参数int a[]的定义与 int* a的定义等价,同为指针变量。

如:int f8(int bc[],int n){}同int f8(int *bc,int n){}

数组的长度需要使用另一个int型参数确定

(5) 二维数组参数说明的两种格式

第1种:<数据类型> <数组参数名>[][<列数>]

第2种:<数据类型>(*<指针参数名>)[<列数>]

参数int c[][N] 等同于参数int (*c)[N]

二维数组的行数需要使用另一个int型参数确定。

最后修改: 2019年09月26日 Thursday 19:02