Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51353
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-05 14:28
文章分类

全部博文(16)

文章存档

2013年(16)

我的朋友

分类: C/C++

2013-10-05 15:02:20

函数的定义语法如下:
类型
函数名(形式参数)
代码块


函数的返回值有:返回值,返回指针,返回引用。不要返回无效的指针和引用。

形参有:值传递,指针传递,引用传递。关于值传递,形参只是实参的一份拷贝,不会影响实参,而指针传递和引用传递则会影响实参。

如:
/*
**交换调用程序中的两个整数(没有效果)
*/
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;
}




阅读(1260) | 评论(0) | 转发(2) |
0

上一篇:没有了

下一篇:const指针

给主人留下些什么吧!~~