函数的定义语法如下:
类型
函数名(形式参数)
代码块
函数的返回值有:返回值,返回指针,返回引用。不要返回无效的指针和引用。
形参有:值传递,指针传递,引用传递。关于值传递,形参只是实参的一份拷贝,不会影响实参,而指针传递和引用传递则会影响实参。
如:
/*
**交换调用程序中的两个整数(没有效果)
*/
void swap (int x,inty)
{
int temp;
temp=x;
x=y;
y=temp;
}
/*
**交换调用程序中的两个整数(传递指针)
*/
void swap (int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
/*
**交换调用程序中的两个整数(引用传递)
*/
void swap (int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
2、函数的缺省认定
当程序调用一个无法见到的函数时,编译器便认为该函数返回一个整型值。对于那些并不返回整型值的函数,这种认定可能会引起错误。
double a=add_function(x,y);/*由于在该语句执行之前并没有函数add_function的申明,所以,编译器认为函数返回值为int型,而实际返回类型为double型,所以编译器会报错*/
double add_function(double x,double y)
{
return x+y;
}
3、可变参数列表
3.1 stdarg 宏
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中,它是标准库的一部分。这个头文件声明了一个类型va_list和三个宏-----va_start、va_arg和va_end。
va_start的第一个参数是va_list变量的名字,第二个参数是省略号前最后一个有你名字的参数
va_arg,这个宏接受两个参数:va_list变量和参数列表中下一个参数的类型。
最后,当访问完最后一个可变参数后,我们需要调用va_end。
/*
**计算指定数量的值得平均值
*/
#include
float average(int n_valkues,..)
{
va_list var_arg;
int count;
float sun=0;
/*
**准备访问可变参数
*/
va_start(var_arg,n_values);
/*
**
*/
for(count=0;count
sum+=va_arg(var_arg,int);
/*
**完成处理可变参数
*/
va_end(var_arg);
return sum/n_values;
}
阅读(452) | 评论(0) | 转发(0) |