返回值类型 函数名(参数列表){
函数体
返回值
}
有些编译器在主函数后定义的函数需要在主函数前声明:返回值类型 函数名(参数列表);
当数组作为函数的参数时,只传递数组的地址,而不是将整个数组赋值到函数中,当数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到函数中。
#include
void Evaluate(int* pPoint); /*声明函数,参数为可变长度数组*/
void Display(int* pPoint); /*声明函数,参数为可变长度数组*/
int main()
{
int iArray[10]; /*定义一个具有10个元素的整型数组*/
Evaluate(iArray); /*调用函数进行赋值操作,将数组名作为参数*/
Display(iArray); /*调用函数进行赋值操作,将数组名作为参数*/
return 0;
}
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* 数组元素的显示 */
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
void Display(int* pPoint) /*定义函数,参数为可变长度数组*/
{
int i; /*定义整型变量*/
for(i=0;i<10;i++) /*执行循环的语句*/
{ /*在循环语句中执行输出操作*/
printf("the member number is %d\n",pPoint[i]);
}
}
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* 进行数组元素的赋值 */
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
void Evaluate(int* pPoint) /*定义函数,参数为可变长度数组*/
{
int i; /*定义整型变量*/
for(i=0;i<10;i++) /*执行循环语句*/
{ /*在循环语句中执行赋值操作*/
pPoint[i]=i;
}
}
void Function(int *point){
}
int array[10];
Function(array);
#include
int main(int argc,char* argv[]){
printf("%d\n",argc); //1
printf("%s\n",argv[0]); //输出程序位置
return 0;
}
argc参数保存命令行的参数个数,是整型变量,这个参数的值至少W为1,因为至少程序名就是第一个参数
argv参数是一个指向字符指针数组的指针,这个数组中的每一个元素都指向命令行实参,所有命令行实参都是字符串,任何数字都是有程序转变为适当的格式。
在语言中,函数的定义是互相平行的、独立的。在定义函数时,一个函数内不能嵌套另一个函数
错误写法:
int main(){
void Display(){
}
}
C语言不允许嵌套定义函数,但允许嵌套调用函数
递归的实现在于函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。
定义:static 返回值类型 函数名(参数列表)
内部函数的好处:内部函数只可以在源文件中使用,不必担心使用的函数时候会与其他源文件中的函数同名。
#include
static char* GetString(char* pString) /*定义赋值函数*/
{
return pString; /*返回字符*/
}
static void ShowString(char* pString) /*定义输出函数*/
{
printf("%s\n",pString); /*显示字符串*/
}
int main()
{
char* pMyString; /*定义字符串变量*/
pMyString=GetString("Hello!"); /*调用函数为字符串赋值*/
ShowString(pMyString); /*显示字符串*/
return 0;
}
定义:extern 返回值类型 函数名(参数列表)
注意:C语言中如果不指定函数时内部还是外部,则默认指定函数为外部函数,即extern可以省略。
位于不同作用域的变量可以是用相同的标识符(为变量起相同的名字)
#include
int main() /*主函数main中*/
{
int iNumber1=1; /*在第一个iNUmber1定义位置*/
printf("%d\n",iNumber1); /*输出变量值*/
if(iNumber1>0)
{
int iNumber1=2; /*在第二个iNUmber1定义位置*/
printf("%d\n",iNumber1); /*输出变量值*/
if(iNumber1>0)
{
int iNumber1=3; /*在第三个iNUmber1定义位置*/
printf("%d\n",iNumber1);/*输出变量值*/
}
printf("%d\n",iNumber1); /*输出变量值*/
}
printf("%d\n",iNumber1); /*输出变量值*/
return 0;
}
全局变量不属于 某个函数,属于整个源文件。如果外部文件需要进行使用,则需要使用extern关键字进行引用修饰
函数名 | 功能 | 定义 | 头文件 | 注意 |
abs() | 取整数的绝对值 | int abs( inti i ); | #include |
|
labs() |
取长整数的绝对值 | long labs(long n) |
同上 | |
fabs() | 返回浮点数的绝对值 | double fabs(double x) | 同上 | |
sin() | 求正弦值 | double sin(double x) | 同上 | |
cos() | 求余弦值 | double cos(double x) | 同上 | |
tan() | 求正切值 | double tan(double x) | 同上 | |
isalpha() | 检测字母 | int isalpha(int ch) |
#include |
是字母则返回值为非零,否则为0 |
isdigit() | 检测数字 | int isdigital(int ch) | 同上 | 是数字则返回值为非零,否则为0 |
isalnum() | 检测字母或数字 | int isalnum(int cg) | 同上 | 是数字或者字母则返回值为非0,否则为0 |
定义一个数组,存放10个元素,代表10个学生的成绩,设计函数,将数组名作为函数的参数,函数功能是求着10个学生的平均成绩。
#include
double avg(int array[10]){
int sum; //总和
double result; //接受平均值
for(int i=0; i<10; i++){
sum += array[i];
}
return result=sum/10;
}
int main()
{
int score[10]; //成绩数组
for(int i=0; i<10; i++){
printf("请输入第%d个数字:",i+1);
scanf("%d",&score[i]);
}
printf("平均成绩为:%f",avg(score));
return 0;
}