C语言函数的定义和调用

一、定义函数

定义一个函数我们需要确定三部分内容:

1.函数的返回值类型

2.函数的名称

3.函数的参数

确定了以上内容后就可以定义一个特有功能的函数了:

int wrongplus(int a, int b)

{

a = a + 1;

b = b + 1;

return a + b;

}

例如上面代码中就定义了一个返回值为int类型的函数,其函数名为wrongplus,一对小括号中的内容为这个函数的参数,也就是说这个函数有两个传入参数int a和int b。在函数体内,分别让a在原来的基础上加1,让b在原来的基础上加1,然后使用return关键字返回a + b的和。如果a的值是2,而b的值是3,那么这个函数的返回值则是7。

如果我们想定义一个没有返回值类型的函数则需要设计其返回值类型为void,同样,如果我们想定义一个没有参数的函数可以将其参数定义为void,通常如果一个函数没有参数可以在函数名后的小括号里什么都不写,例如:

void function1(void)

{

}

void function2()

{

}

二、函数调用与声明

我们定义了这样一个wrongplus()的函数,那么如何来让其它功能使用它呢?我们看下面程序:

#include <stdio.h>

main()

{

int a = 2, b = 3;

int c;

int wrongplus(int a, int b);

c = wrongplus(a, b);

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

}

int wrongplus(int a, int b)

{

a = a + 1;

b = b + 1;

return a + b;

}

2 + 3 = 7

如果函数的定义是在调用函数的后面(下面)则需要在调用之前声明函数的定义,否则不需要事先声明。声明的意思是告诉编译器,这个函数的返回值类型、函数名和参数。

我们在调用一个函数时,需要向这个函数传其需要的参数,例如a和b这两个变量,并可以指定另一个变量用于接收这个函数执行后的返回值,比如变量c就接收了函数wrongplus()的返回值,结果为7。但是我们看到程序的运行结果是 2 + 3 = 7,也就是说,执行了函数wrongplus()后,我们虽然对函数内的参数变量分别加1,但主函数main中的a和b的值并没有发生变化。

三、实参与形参

当我们调用函数时,对其传入的参数和函数体内接收到的参数其实并不是同一个变量。调用函数时向函数传入的参数称作实际参数,简称实参,而函数体内部用于接收外部调用时传入的参数的参数称为形式参数,简称形参。

例如上面例子中,在main函数中定义的变量int a和int b,在调用wrongplus(a, b);时这两变量是实参,也就是将这两个变量的值2和3传入到函数内部。而在函数wrongplus()的函数体内,用于接收这两个参数时的int a和int b则是形参,这是函数体内部额外的两个变量,用于接收2和3这两个值,这两个变量并不是main函数中定义的a和b 。

在wrongplus()函数体内,对形参做a = a + 1;和b = b + 1;操作,其实只影响到了函数体内部的这两个变量,而并未影响到main函数中的变量a和b的值。所以,在wrongplus()函数体内的a和b的值为3和4,函数运行结果的返回值为7,而在main函数中的a和b两变量的值仍然是2和3,所以printf()函数显示出的结果则是 2 + 3 = 7 。

发布了261 篇原创文章 · 获赞 4 · 访问量 4260

猜你喜欢

转载自blog.csdn.net/it_xiangqiang/article/details/105206380