C Primer Plus学习_14 带参函数

第五章已经接近尾声。

带参数的函数

前面的文章中曾经出现过带参数的函数,要掌握函数还有一段路要走。

下面给出一个书中的程序,领略一下函数的作用,顺便复习一些前面的知识。

/*pound.c -- 定义一个带参数的函数*/
#include <stdio.h>
void pound(int n);//ANSI函数原型声明
int main(void)
{
	int times = 5;
	char ch = '!';//ASCII码值为33
	float f = 6.0f;
	
	pound(times);
	pound(ch);
	pound(f);
	
	return 0; 
 } 
void pound(int n)
{
	while(n-- > 0)
	{
		printf("#");
	}
	printf("\n");
 } 

运行程序后,输出结果如下:

#####
#################################

######

这是一个输出#的程序,根据给定的数,输出相应数量的#,有pound函数来完成。

首先来看程序的函数头:void pound(int n)

如果该函数不接受任何参数,那么()中应该是void(即(void)这样),由于该函数接受一个int 类型的参数,使用圆括号中包含一个int 类型变量n 的声明。

声明参数就创建了一个叫形式参数(形参)的变量。在该例中形参是int 类型的变量 n  。例如pound(5),就会把5赋值给n ( 程序中调用pound(time)也是一样)。在这里,我们将函数调用传递的值叫做实际参数(实参),从字面上相信你也能理解其意义。 

变量名是函数私有的,即在函数中定义的函数名不会和别处相同名称发生冲突。如果在pound() 中用times代替n 那么这个times和main()中的times不一样。也就是说程序中出现两个相同的名称,程序能够区分他们。

函数调用。第一个函数调用是pound(times),times的值5被赋给n 。因此printf()函数打印了5个#和一个换行符。第二个函数调用是pound(ch),这里ch是char类型被初始化为“!”,其对应的值是33。但pound()的参数类型是int,与char不匹配。程序开头的函数原型在这里发挥了作用。pound()函数原型说明了两点:

  1. 该函数没有返回值
  2. 该函数有一个int类型参数

该例中,函数原型告诉编译器pound()需要一个int类型的参数。相应的,当编译器执行到pound(ch)是,会将其值转换成int类型。同理第三个也是如此。


【注】

C通过运算符提供多种操作,运算符有规定的运算对象的数量、优先级和结合律。每个C表达式都有一个值,如果不了解运算符的优先级和结合律,写出的表达式可能和预期不符。

虽然C允许编写混合数值的表达式,但是算数运算符要求对象都是同类型的,因此C会进行自动转换,但不能过于依赖它。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值