c语言入门教程函数,C语言入门教程-函数

本文详细介绍了C语言中的函数概念,包括如何定义和使用函数,函数的参数、返回值和局部变量。强调了即使无参数也要使用括号,并指出未指定返回值时编译器可能会发出警告。还提到了旧式和新式函数声明的差异,并通过示例展示了如何处理函数返回值。此外,还讨论了函数的类型灵活性,可以返回任何类型的数据,包括整型、浮点型等。
摘要由CSDN通过智能技术生成

函数

大多数编程语言都支持定义某种形式的函数。使用函数可以将一个大程序分解为小的代码块并分别命名,然后这些命名的代码块就可以在整个程序中重复使用了。函数输入参数并返回一个结果。C函数可以输入的参数个数没有限制。一般来说,对于编译器而言,只要在调用函数以前事先声明函数名称,则各函数在程序中的顺序并不重要。

我们已经讨论过一些有关函数的内容了。前面遇到的rand函数几乎是最简单的函数了。它不接受参数并返回一个整数:int rand()

/* 摘自 K&R

- 生成一个0-32767之间的随机数字。*/

{rand_seed = rand_seed * 1103515245 +12345;return (unsigned int)(rand_seed / 65536) % 32768;}

int rand()这些程序定义了rand函数,还指明rand没有输入参数并返回一个整数。此函数没有局部变量,但如果需要的话,局部变量会紧接着打开的{开始。(C 允许您在任何 { 后面声明变量,这些变量一直存在,直到程序执行至那个匹配的 } 为止,此后即不复存在。因此函数的局部变量在遇到函数中匹配的 } 时就消失了。在其生存周期内,局部变量被保存在系统栈上。)请注意第一行的()后面没有;。您若不小心加上了分号,编译器会给出一大堆莫名其妙的错误信息。另外还要注意即使当函数没有参数时也要使用()。括号告诉编译器您在声明一个函数而不是简单地声明一个int类型。

对于任何要返回结果的函数来说,return语句是不可或缺的。它指明函数要返回的值并使函数立即退出。因此您可以在函数中放置多个return语句作为函数的多个退出点。若函数中没有return语句,则函数在执行到 } 时退出并返回一个随机值(这时很多编译器会发出警告)。C中的函数可以返回任何类型的值:包括int、float、char、结构体等等。

调用rand函数的方式有许多种。例如:x=rand();。此语句中x被赋值为rand的返回值。注意,在函数调用中即使没有参数也必须使用(),否则x将被赋值为rand函数的内存地址,而这通常并非您的本意。

也可以用这种方式调用rand:if (rand() > 100)

或:

rand();

后一种方式中,rand函数被调用了,可是其返回值随即被丢弃。您可能不会以这种方式使用rand,但很多函数会返回某种错误代码作为调用结果,而您又不关心这些错误代码的话(如您知道不可能发生错误),就可以用这种调用方式将其丢弃。

如果您不想返回任何值的话,函数可以使用void作为返回类型。例如:void print_header()

{printf("第一个程序

");printf("作者 Marshall Brain

");

printf("版本 1.0, 发布于1991年12月26日

");}

此函数没有返回值。可以像下面这样调用:

print_header();

调用时必须加上(),否则函数不会被调用,即使此语句在很多系统上能通过编译。

C函数可以接受任何类型的参数。例如:fact(int i)

{int j,k;j=1;for (k=2; k<=i; k++)

j=j*k;return j;}

返回传入的整型参数i的阶乘。用逗号分隔多个参数:int add (int i, int j)

{return i+j;}

C语言经历了许多年的演变。有时您会看到用“旧式风格”编写的函数。以add为例:

int add(i,j)

int i;int j;{return i+j;}

您应该能够读懂旧式代码。它们在执行上并无不同,只不过是另一种书写格式罢了。编写程序时应该使用“新式风格”(称为ANSI C),把类型声明写在参数列表中;除非您要把代码交付给只有“旧式”(非ANSI C)编译器的人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值