免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1253 | 回复: 5

[函数] [菜鸟求助]一个关于函数声明的问题 [复制链接]

论坛徽章:
0
发表于 2004-04-17 22:59 |显示全部楼层
在潭浩强的 c语言程序设计教程里,有213页上有这么一段程序

#include "stdio.h"
#define N 12
main ()
{
        static float a[] = { 1.5,3.8,5.6,7.8,91.6,1.61,13.3,15.0,17.5,19.9,21.7,23.0};
        float arr_add(),odd_add(),arr_ave(),arr_max();
        void process(float *p,int n,float (*fun)());
        int n = N;
        printf("the sum of %d elements is :",n);
        process(a,n,arr_add);
        printf("the sum of odd elements is :";
        process (a,n,odd_add);
        printf("the average of %d elements is :",n);
        process (a,n,arr_ave);
        printf("the maximum of %d elements is :",n);
        process(a,n,arr_max);
}

float arr_add (float arr[],int n)
{
        int i;
        float sum = 0;
        for (i = 0;i < n ;i++)
                sum = sum + arr;
        return (sum);
}


float odd_add (float *p,int n)
{
        int i;
        float sum = 0;
        for ( i = 0; i < n ;i = i + 2,p = p + 2)
                sum = sum +*p;
        return (sum);
}


float arr_ave( float *p,int n)
{
        int i;
        float sum = 0,ave;
        for (i = 0;i < n;i ++)
                sum = sum + p;
        ave = sum/n;
        return (ave);
}


float arr_max (float arr[],int n)
{
        int i;
        float max;
        max = arr[0];
        for ( i = 1;i < n;i ++)
                if (arr >; max )   max = arr;
                return (max);
}


void process (float *p,int n,float ( *fun)())
{
        float result;
        result = (*fun )(p,n);
        printf ("%8.2f\n",result);
}


其中main函数中的函数声明语句
float arr_add(),odd_add(),arr_ave(),arr_max();

为什么各个函数的形参都没有给出,照样可以编译通过执行?
不是说必须给出形参的类型吗?

不明白啊

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-04-17 23:31 |显示全部楼层

[菜鸟求助]一个关于函数声明的问题

用的什么编译器?
是tc吗?

论坛徽章:
0
发表于 2004-04-18 01:04 |显示全部楼层

[菜鸟求助]一个关于函数声明的问题

在vc6.0 和tc for windows 下编译都不能通过

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-04-18 01:40 |显示全部楼层

[菜鸟求助]一个关于函数声明的问题

没找到你说的这个程序啊。是哪个啊。第几章的啊?

论坛徽章:
0
发表于 2004-04-18 19:51 |显示全部楼层

[菜鸟求助]一个关于函数声明的问题

In traditional C, parameter type lists are not allowed in function declarations. For example , the function declaration of sqrt() is given by

double sqrt();           /*  traditional C style */

Even though ANSI C compilers will accept this style, function prototypes are preferred!

double sqrt(double);    /* the ANSI C style  */

论坛徽章:
0
发表于 2004-04-19 11:47 |显示全部楼层

[菜鸟求助]一个关于函数声明的问题

所以叫函数申明(无需给出形参,但必须说明返回值类型),而非函数定义嘛;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP