函数的部分理解

1、函数为什么需要形参与返回值
(1)函数名是一个符号,表示整个函数代码段的首地址,实质是一个指针常量,所以在程序中使用到函数名时都是当地址用的,用来调用这个函数的。
(2)函数体是函数的关键,由一对{}括起来,包含很多句代码,函数体就是函数实际做的工作。
(3)形参列表和返回值。形参是函数的输入部分,返回值是函数的输出部分。
把函数看成是一个加工机器(程序其实就是数据加工器),形参列表就是这个机器的原材料输入端;而返回值就是机器的成品输出端。
(4)其实如果没有形参列表和返回值,函数也能对数据进行加工,用全局变量即可。
(尽量少使用全局变量,因为若好几个函数中都用到同一个变量,则这个变量的数值一直改变,不容易理解代码)

函数需要向外部返回多个值时怎么办?
(1)一般来说,函数的收入部分就是函数参数,输出部分就是返回值。
函数的参数可以有很多个,而返回值只能有1个。这就造成无法让一个函数返回多个值。

(2)想要输出多个返回值,通常的做法是用参数来做返回(在典型的linux风格函数中,返回值是不用来返回结果的,而是用来返回0或者负数用来表示程序执行结果是对还是错,是成功还是失败)。
(3)普遍做法,编程中函数的输入和输出都是靠函数参数的,返回值只是用来表示函数执行的结果是对(成功)还是错(失败)。
如果这个参数是用来做输入的,就叫输入型参数;如果这个参数的目的是用来做输出的,就叫输出型参数。

(4)一般带有const的指针变量参数就是输入参数,没有const关键字的指针变量一般用作输出参数。普通变量的话就一定是输入参数,它传入
的是值。

例子:

int Mutipl(const int *a,int *p)
{
int var;
var = 5*a;
if(var > 100)
{
return -1;
}else
{
*p = var;
return 0;
}
}
int main (void)
{
int x = 10,y = 10,ret = -1;

ret = Mutipl(&x,&y);
if (ret == -1)
{
printf("出错了\n");
}
else
{
printf("result = %d.\n", b);
}
}
结果是50
注:传出的值在y上,只要使用y就行

 


(参考朱有鹏老师)

 

posted on 2017-03-26 22:24  困不休  阅读(172)  评论(0编辑  收藏  举报

导航