精华内容
下载资源
问答
  • C++里声明函数原型的作用

    千次阅读 2018-11-08 23:02:14
    #include <...// 这个声明函数原型的代码必须有, 如果没有的话会报use of undeclared identifier 'simon' 这个异常 void simon(double n); int main() { simon(3); cout <&...
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    // 这个声明函数原型的代码必须有, 如果没有的话会报use of undeclared identifier 'simon' 这个异常
    void simon(double n);
    
    
    int main()
    {
    	simon(3);
    	cout << "please input a int num : " << endl;
    	double n;
    	cin >> n;
    	simon(n);
    	cout<< "the end" << endl;
        return 0;
    }
    
    void simon(double n)
    {
    	cout<<"simon says n = " << n << endl;
    }
    
    

    如上面所示的代码,  有一个自定义的函数simon, 如果该函数实在main()方法的下方的话,  那么注释下方的哪行代码 void simon(double n); 不写的话就会抛如下的异常:

    /tmp/652211883/main.cpp:10:2: error: use of undeclared identifier 'simon'
            simon(3);
            ^
    /tmp/652211883/main.cpp:14:2: error: use of undeclared identifier 'simon'
            simon(n);
            ^
    2 errors generated.
    
    exit status 1

    还有种方法来避免这个问题就是把自定义的方法写到main函数的上方, 如下所示:

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    //void simon(double n);
    // 写到main的上方可以避免这个异常
    void simon(double n)
    {
    	cout<<"simon says n = " << n << endl;
    }
    
    int main()
    {
    	simon(3);
    	cout << "please input a int num : " << endl;
    	double n;
    	cin >> n;
    	simon(n);
    	cout<< "the end" << endl;
       return 0;
    }
    
    
    
    

     

    展开全文
  • 函数原型&函数声明

    千次阅读 2019-02-20 09:53:36
    函数原型类似函数定义时的函数头,又称函数声明。为了能使函数在定义之前就能被调用,C++规定可以先说明函数原型,然后就可以调用函数。函数定义可放在程序后面。 由于函数原型是一条语句,因此函数原型必须以分号...
    对func函数的定义: char* func(int x, int y) { ....}
    对func函数的调用:char* s;  s=func(10,50);
    对func函数的原型说明: char* func(int x, int y);    ←后面有分号,并且没有函数体{}
        函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的接口。
        函数原型类似函数定义时的函数头,又称函数声明。为了能使函数在定义之前就能被调用,C++规定可以先说明函数原型,然后就可以调用函数。函数定义可放在程序后面。 由于函数原型是一条语句,因此函数原型必须以分号结束。函数原型由函数返回类型、函数名和参数表组成,它与函数定义的返回类型、函数名和参数表必须一致。函数原型必须包含参数的标识符(对函数声明而言是可选的);说明:系统标准函数并没有在包含文件中定义,而只是提供了函数原型。在调用函数时,系统会正确地调用库函数。 注意:函数原型与函数定义必须一致,否则会引起连接错误。
        函数先声明才可以被调用,如同变量先声明后使用。函数的声明也可以和函数定义分开。一个函数只可以定义一次,但是可以声明多次。
        也就是说是通过函数原型进行函数声明的!
    
    展开全文
  • C++函数原型

    2019-01-12 21:16:44
    调用函数需要先声明函数原型  若函数定义在调用点之前,可以不另外声明;  若函数定义在调用点之后,必须要在调用函数前声明函数原型:  函数原型:类型标识符 被调用函数名(含类型说明的形参表); 函数...

    调用函数需要先声明函数原型

     若函数定义在调用点之前,可以不另外声明;

     若函数定义在调用点之后,必须要在调用函数前声明函数原型:

     函数原型:类型标识符 被调用函数名(含类型说明的形参表);

    函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的接口

    展开全文
  • C 函数声明, 函数原型, 函数定义

    千次阅读 2016-11-04 12:22:49
    函数声明的发展1 隐式函数声明 implicit function declaration main 函数和 printf 函数返回值类型为 int, 若不声明, 编译器默认函数返回值为 int 类型 C90标准起,这种写法就步入了被逐步抛弃的过程(尽管当时还没有...

    函数声明的发展

    1 隐式函数声明 implicit function declaration

    1. main 函数和 printf 函数返回值类型为 int, 若不声明, 编译器默认函数返回值为 int 类型
    2. C90标准起,这种写法就步入了被逐步抛弃的过程(尽管当时还没有完全立即废止)
    3. C99废除了隐式函数声明法则(remove implicit function declaration), 省略main()前面的int也已经不再容许了
    main()
    {
        printf("hello, world!\n");
    }

    2 函数类型声明 function type declaration

    1. sqrt 函数类型不是 int, 需要进行函数类型说明(只声明函数类型和函数名)
    2. 调用函数时存在参数类型或个数方面的错误编译器是无法察觉的
    double sqrt();
    
    int main()
    {
        printf("%f\n" , sqrt(9.));
    }

    3 函数定义声明

    1. 把函数定义写在函数调用之前, 这种声明可以检查出函数调用时在参数个数和类型方面的错误
    2. 弊端是在由多个源文件组成的源程序时, 不利于代码的组织
    3. 函数定义声明属于函数原型声明
    double square(double x)
    {
        return x * x ;
    }
    
    int main(void)
    {
        printf("%f\n" , square(3.) );
        return 0;
    }

    4 函数原型声明 function propotype

    C 标准借鉴 C++ 语言规定了函数原型(Function Propotype)声明, 不但可以检查函数调用时参数类型和个数方面的错误,同时解决了源代码的组织问题

    double square (double x);
    
    int main(void)
    {
        printf("%f\n" , square(3.) );
        return 0;
    }
    
    double square ( double x)
    {
        return x * x ;
    }

    总结

    函数类型声明, 函数定义, 函数原型都是函数声明

    声明 declaration

    指定标识符的意义和性质

    A declaration specifies the interpretation and attributes of a set of identifiers.

    定义 definition

    某个标识符的定义(Definition)同时也是这个标识符的声明(Declaration), 函数定义则包括函数体

    A definition of an identifier is a declaration for that identifier that: ……for a function, includes the function body

    原型 propotype

    特指包括说明参数类型的函数声明,它同样包含用这种方式写出的函数定义

    错误辨析

    错误原文

    谭浩强 ,《C程序设计》(第四版),清华大学出版社,2010年6月,p182

    函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型以及函数体等,它是一个完整的、独立的函数单位。

    函数的声明的作用则是把函数的名字,函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时进行对照检查(例如,函数名是否正确,实参与形参的类型和个数是否一致),它不包括函数体。

    分析

    “对函数的定义和声明不是一回事”是错误的, 函数定义本身就是一种函数声明, 是子集关系。

    “而函数的声明的作用则是把函数的名字,函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时进行对照检查,它不包括函数体”这句话同样不通。函数定义本身就是一种函数声明,所以无法断定函数的声明是否包括函数体;而且老式的函数类型声明也属于函数声明,这种函数声明并不检查参数类型及个数方面的错误。此外函数声明也并没有检查“函数名”正确与否的功能。这段文字中的“函数类型”这个概念也有错误,函数类型所描述的不但包括函数返回值类型,也可能一并描述参数的个数和类型(如果是函数原型),因此不能与“形参的类型、个数”相提并论。

    函数声明的作用

    1. 被调函数根据函数类型将函数返回值存入栈或寄存器中, 调用函数将根据函数原型提供的类型访问这个内存或寄存器位置 c++ primer plus p204
    2. 调用函数根据函数原型提供的参数类型, 传入确定类型和数量的实参, 使被调函数能够正确处理传入的参数

    参考

    “函数声明”、“函数原型”与“函数定义”辨析

    展开全文
  • C语言函数声明以及函数原型

    千次阅读 2020-02-24 13:47:56
    函数声明(Declaration),就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。 函数声明的格式非常简单,相当于去掉函数定义中的函数体,并在最后加上分号;,如下所...
  • 函数原型,函数声明,函数定义三者之间的关系 函数原型指函数签名,函数名,返回类型和访问修饰符。函数签名指确定的参数数量及其类型。注意参数名可选,也就是可以不写形参名。 例如:void Sum(int a,int b); 或 ...
  • 函数原型 int power(int m, int n) 依次是 函数返回类型、函数名和形参列表 函数原型不需要函数体,也不需要形式参数的名字,用分号作为原型的结束符。 对于形参列表只需要 说明需要几个参数,分别为什么类型...
  • 为什么谭浩强的书上前面说,函数首行称为函数原型,而后面说函数声明函数原型函数原型到底指的是什么?另外,函数原型中包含函数的存储类别吗?
  • C语言函数的声明以及函数原型

    千次阅读 2019-07-02 20:45:58
    C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。...函数声明的格式非常简单,相当于去掉函数定义中的函数体再加上分号;,如下所示: 返回值类型 函数名( 类型 形参, 类...
  • 所谓函数原型,又称函数声明,就是在调用这个函数之前要先声明一下这个函数,才能让别的函数能够访问到它(如果这个函数定义在调用它的代码块的前面则不用声明) C语言和C++都保留了函数声明这一需求,在声明时都有...
  • C++函数原型(函数声明

    千次阅读 2015-10-11 19:20:57
      从Java到c++的学习之路!!    在Java中,只要方法...但是在C++中,如果在定义前就调用了,那么要有一个函数声明,也就是函数原型。   #include &lt;iostream&gt; using namespace std; vo...
  • C++ 函数原型

    千次阅读 2017-04-01 09:58:40
    一,函数原型语法 函数原型是一条语句,因此必须使用分号结束。获得原型最简单的方法是复制函数定义中的函数头。函数原型不要求提供变量名,有类型列表就可以了。 二,为什么需要函数原型函数原型描述了函数到...
  • 函数声明函数原型、函数定义

    万次阅读 2013-01-07 17:20:31
    函数的“定义”和“声明”不是一回事。“定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等,它是一个完整的、独立的函数单位。而“声明” 的作用则是把函数的名字、函数类型以及形参...
  • 函数原型和函数声明的区别

    万次阅读 2018-07-04 19:22:24
    函数原型:指明函数的名字,返回的类型,有几个参数,这几个参数是什么类型,不需要函数体,也不需要形式参数的名字,其中用分号作为原型的结束符。例如:int fun( int );第一个int指明返回的类型,第二个int指明...
  • 函数原型声明、定义?

    千次阅读 2019-01-08 14:50:00
    函数原型声明、定义? 函数原型相当于函数声明,包括函数类型、函数名、形参列表(其中形参名可以省略),且不需要函数体,例如: int func_a(int a); double func_b(double b); 而函数定义则...
  • 函数原型

    千次阅读 2008-03-30 13:18:00
    标准库函数的函数原型都在头文件中提供,程序可以用#include指令包含这些原型文件。对于用户自定义函数,程序员必须在源代码中说明函数原型。...在C++中,函数声明就是函数原型。 函数原型和函数定义在返回类
  • 前景提示:  c语言的标准从K&Rc,c89(ANSI c),c99,c11不断的发展,新标准不断的提出。但是,目前大部分编译器对c89完全支持,其他的...函数定义:声明 + 具体实现 。它向编译器提供函数的信息,以及调用函数时的
  • 对被调函数的声明函数原型

    千次阅读 2018-12-03 15:42:55
    在一个函数中调用另一个函数(即被调用的函数)需要具备如下条件; (1)首先被调用的函数必须是已经定义的函数(库函数或用户自己定义的函数)。但仅有这个条件还不够。 (2)如果使用库函数,应该在本文件开头用#...
  • C语言函数原型的作用

    千次阅读 2019-10-29 21:27:20
    函数原型(Function Prototype):即函数声明给出了函数名、返回值类型、参数列表(重点是参数类型)等与该函数有关的信息。 函数原型的作用:告诉编译器与该函数有关的信息,让编译器知道函数的存在,以及存在的...
  • perl内置函数原型

    2017-01-24 09:54:44
    Perl函数原型 Perl原型是什么 原型有哪些 使用原型Perl函数原型通过原型定义程序员自己的函数,可以像Perl内置函数一样调用自己的函数。原型对参数的个数,参数的类型等做各种约束。使用原型定义函数,函数更安全更...
  • 当编译器遇到一个函数调用时,它产生代码传递参数并调用这个函数,而且接收该函数返回的值(如果有的话)。但编译器是如何知道该函数期望接受的是什么类型和多少数量的参数呢?如何知道函数返回值的类型呢? 如果...
  • C++中的函数原型和函数定义

    千次阅读 热门讨论 2020-08-30 14:44:23
    函数原型类似函数定义时的函数头,又称函数声明。函数声明由函数返回类型、函数名和形参列表组成。这三个元素被称为函数原型,函数原型描述了函数的接口。 函数原型在c++中就是函数声明,因为它定义了函数名、参数...
  • vim 查看函数原型

    千次阅读 2013-04-05 10:16:33
    ctags可以分析程序生成tag文件为vim所用,从而在编写程序时实现函数原型、数据结构声明等快速跳转,很是方便。 首先确定你的Linux系统里安装了ctags。没有的话,请先安装ctags。如果是Debian或者Ubuntu系
  • C++必须要有函数原型,C语言可选 1.1  C语言 1  #include 2   3  int main(intargc, char *argv[]) 4  { 5  func1(); 6  func2(); 7   return 0; 8  } 9   ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,028
精华内容 61,211
关键字:

如何声明函数原型