c语言返回数组的函数 python所有函数讲解( 二 )


return area_back; /*返回一个值*/
}
和前面的程序有几点不同:
(1).声明函数类型时 , 不是void , 而是int 。这是由于最后要求的面积是整型的 , 所以声明函数的返回值类型是整型 。
【c语言返回数组的函数 python所有函数讲解】(2).return语句 它的意思就是返回一个值 。在C语言中 , return一定是在函数的最后一行 。
(3).调用函数的时候,由于函数有一个返回值 , 所以必须要用变量接受这个返回值(不是绝对的) , 如果我们不用一个变量接受这个值 , 函数还照样返回 , 但是返回的这个值没有使用 。
上面的例子运行过程是这样的 , 先把实参的值传递给形参 , 然后在子函数里计算面积得到area_back , 然后返回这个面积到主函数 , 也就是把area_back赋值给area , 最后输出 。
前面说了 , 返回值有时不一定非要用一个变量来接受 , 我们可以把上面的程序简化为:
int a(int);
main()
{
int num;
scanf(%d,&num);
printf(%d,a(num)); /*函数调用放在这儿*/
}
int a(int num)
{
int area_back;
area_back=num*num;
return area_back;
}
这样函数返回的值就可以直接放到输出缓冲区直接输出了 。
还可以再简化为:
int a(int);
main()
{
int num;
scanf(%d,&num);
printf(%d,a(num));
}
int a(int num)
{
return num*num; /*直接在这儿返回*/
}
对于函数而言 , 一个函数只能返回一个值 , 如果想返回一组数值 , 就要使用数组或者结构或者指针 。其实对于这些 , 还是返回一个值 , 只是这个值是一个地址而已 。但是对于数组的返回有和变量不同 , 因为数组和地址是联系在一起的 。看一个例子:
void a(int []);
main()
{
int array[5]={1,2,3,4,5},i;
a(array);
for(i=0;i<5;i++) printf(%d,array[i]);
}
void a(int array[])
{
int i;
for(i=0;i<5;i++) array[i]++;
}
看看这个程序 , 好象函数没有返回值 , 但是函数的功能的确实现了 , 在主函数当中输出的值的确都各加了1上来 。这就是因为数组和变量不同的缘故 , 在后面讲指针的时候再详细说明 。
下面看一个实际例子 , 加深对函数的理解:
用函数实现 , 判断一个整数是不是素数?在主函数里输入输出 , 子函数里判断 。
#include math.h
int judge(int);
main()
{
int num,result;
scanf(%d,&num);
result=judge(num);
if(result==1) printf(yes\n);
else printf(no\n);
}
judge(int num)
{
int i,flag=1;
for(i=2;i<=sqrt(num);i++)
if(num%i==0)
{
flag=0;
break;
}
return flag;
}
可以看出 , 函数的功能就是为了让程序看起来有条理 , 一个函数实现一个特定的功能 。如果我们还和以前那样 , 把所有代码都放在main()函数 , 好象程序就显得臃肿了 。而且函数有一个显著的好处就是很方便的使用 。这里面的judge()函数判断一个数是不是素数 , 如果我们以后还有判断某个数是不是素数 , 就可以直接使用这个函数了 。我们这样 , 把下面的代码:
judge(int num)
{
int i,flag=1;
for(i=2;i<=sqrt(num);i++)
if(num%i==0)
{
flag=0;
break;
}
return flag;
}
保存为judge.h文件 , 放到include目录里面 。
以后就可以直接使用这个函数了 , 就好象直接使用abs(),sqrt()这些函数一样方便 。
#include math.h /*必须要有它*/
#include judge.h
main()
{
int num,result;
scanf(%d,&num);
result=judge(num);
if(result==1) printf(yes\n);
else printf(no\n);
}
看上面的例子 , 我们在程序中直接使用了函数judge() , 这就是我们自己编写的第一个所谓的库函数 。但是程序的第一行要包含math.h文件 , 这是因为在judge.h里面使用了sqrt()函数 , 所以为了方便 , 我们可以把math.h放到judge.h里面 , 也就是在judge.h文件的第一行加上include math.h,这样 , 我们的主程序中就不需要包含它了 , 但是这样做也有副作用 , 具体有什么副作用 , 我们以后接触到时再介绍 。