c语言void nzp,C语言-函数

本文详细介绍了C语言中的函数,包括函数的定义、调用方式以及与数组的关系。无参函数和有参函数的定义形式被阐述,强调了main函数的特殊性。函数调用分为函数表达式、函数语句和作为函数实参三种方式。此外,还讨论了函数声明的重要性以及return语句的作用。最后,通过实例展示了如何将数组作为函数参数,传递和处理数组元素。
摘要由CSDN通过智能技术生成

众所周知,C程序是由函数组成的。虽然在C程序中大都有且只有一个主函数(main(int argc,char argv[])),但使用程序往往由多个函数组成的。函数是C程序的基本模块,通过对函数模块的调用实现特定的功能。C语言中的函数相当于其它高级语言中的子程序。C语言不仅提供了丰富的函数库(如Turbo C,MS C都提供了三百多个函数),还允许用户建立自己定义的函数。用户可以把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。可以说C程序的全部工作都是由各式各样的函数完成的,因此C语言又称之为函数式语言。

另外,main函数是主函数,它可以调用其它函数,而不允许被其它函数调用。因此,C程序的执行总是从main函数开始的,完成对其它函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C程序必须有且只有一个主函数main。

1 函数的定义

定义:多个语句的集合,构成一个函数。

无参函数

函数的一般形式:

类型标识符 函数名()

{(函数声明部分)

语句

}

说明:类型标识符和函数名称为函数头。类型标识符指明了本函数的类型,函数的类型实际上就是函数返回值得类型。函数名是由用户定义的标识符,函数名后有一个空括号,其中可以无参数,但是括号必须有。

{}中的内容称为函数体。在函数体中声明部分,是对函数体内部所用到的变量类型说明。

在很多情况下,不要求无参函数有返回值,此时函数类型符可以写为void。

//案例1:

void hello()

{

printf("hello world!\n");

}

//hello 为一个无参函数,因为它没有返回值,当被调用时,输出“hello world!”

有参函数

类型标识符 函数名(形式参数表达式)

{(函数声明部分)

语句;

}

有参函数比无参函数多了一个(形式参数表达式)。在形参表中给出的参数称为形式参数(简称“形参”),多个形参之间用逗号隔开。在进行调用时,主函数将赋予这些形参实际值。既然,形参为变量,那么在形参表中给出形参的类型说明。

// 案例2:

int min (int a, int b) //说明min函数为整型函数,且有整型返回值,a,b均为形参变量

{

if (a>b)

return b;

else

return a;

}

2 函数的调用

C语言中函数调用的一般形式:

函数名(实参表达式)

对于无参函数调用时则无实际参数表。实际参数表中的参数可以是常量,变量或者其它构造类型数据及表达式。各实际参数之间用逗号分隔开。

函数调用的方法

1.函数表达式:函数作为表达式中的一类,以函数返回值参与表达式的运算。

2.函数语句:函数调用的一般形式加上分号,即构成函数语句。例如printf("%d\n",s);scanf("%d",a)。

3.函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。

注意:在调用函数的时候,被调用的函数一定在调用前进行声明。

3 函数的声明

告诉被调用者,函数是存在的,是被定义过的。

一般形式:

类型说明符 被调用函数名(类型 形参,类型 形参…)

或:

类型说明符 被调用函数名(类型 类型…)

注意:括号内只给出形参和类型,或只给出类型,从而方便编译系统进行检错,以防止可能出现的错误。

int max (int a,int b)

// 也可以写为:

int max (int ,int)

定义函数注意事项:

1.函数内部不允许定义函数;

2.如果函数的数据类型是void的,那么可以有return,也可以没有return。如果有return,后面不能有值。

3.如果函数的数据类型是非void类型,那么必须要有一个return,而且return后面必须要有值(可以是常量,也可以是变量),且值得数据类型必须和函数的数据类型保持一致。

4 return的作用

1.当函数碰到return,return后面的代码将不会被执行,标志着函数的结束。

2.将信息返回给函数的调用者

#include

int sum(inta,int b)

{

c=a+b;

return c;

}

int main()

{

int a=1,b=2;

int c=sum(a,b);

printf ("c=%d\n",c);

return 0;

}

5 函数和数组的关系

数组可以作为函数的参数使用,进行数据传送。有两种形式:

1 数组元素作为函数实参

数组元素作为函数实参使用与普通变量是相同的,在函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。

练习:判断一个整数数组中的元素,若大于零输出,若小于零输出零。

#include

void nzp(int b)

{

if(b>0)

{

printf("%d",b);

}

else

{

printf("%d",0);

}

}

int main()

{

int a[5],i;

for (i=0;i<5;i++)

{

printf("input a number:");

scanf("%d",&a[i]);

nzp(a[i]);

}

}

2.数组名作为函数参数

练习:求一个整型数组元素的平均值

#include

int aver(int a[5])

{

int ave=0,i;

for(i=0;i<5;i++)

{

ave+=a[i];

}

ave/=5;

return ave;

}

int main()

{

int a[5],i;

for(i=0;i<5;i++)

{

printf("input a number:");

scanf("%d",&a[i]);

}

int ave=aver(a);

printf("%d\n",ave);

return 0;

}

用数组名作为函数参数时,应注意:

1.形参数组和实参数组的必须一致;

2.形参数组和实参数组的长度可以不同,因此在调用时,只传首地址而不检查形参数组的长度。当形参数组的长度和实参数组的长度不一致时,虽然不会出现语法错误,但执行程序结果将与实际不符时,需要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值