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

    5b5a04b81f0f041f9ff34eaa72712873.png

    梵蒂冈之花

    这不是必需的,但不使用原型是不好的做法。使用原型,编译器可以验证您正在正确地调用函数(使用正确的参数编号和类型)。没有原型,就有可能拥有以下内容:// file1.cvoid doit(double d){

        ....}int sum(int a, int b, int c){

        return a + b + c;}这是:// file2.c// In C, this is just a declaration and not a prototypevoid doit();int sum();int main(int argc, char *argv[]){

        char idea[] = "use prototypes!";

        // without the prototype, the compiler will pass a char *

        // to a function that expects a double

        doit(idea);

        // and here without a prototype the compiler allows you to

        // call a function that is expecting three argument with just

        // one argument (in the calling function, args b and c will be

        // random junk)

        return sum(argc);}

    展开全文
  • C++ 函数原型

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

    一,函数原型

    函数原型(函数声明)就是告诉编译器这个函数是存在的,让编译器知道这个函数的相关信息。函数原型不要求提供形参名,有类型列表就可以了。避免使用函数原型的方法是,在首次使用函数定义之前定义它,但这并不是总可行的。我们一般把函数声明放在主函数的前面,因为min()函数是应用程序的入口。函数声明是告诉编译器这个函数存在,函数定义是表示该函数如何去做。


    二,为什么需要函数原型?

    函数原型描述了函数到编译器的接口,它将函数返回值的类型以及参数的类型和数量告诉编译器。例如:看函数原型如何影响下面的函数调用。

    double cube(double x);
    
    int main()
    {
        double val = cube(5.0);
        return 0;
    }
    
    double cube(double x){
        return x * x;
    }

    首先原型告诉编译器,cube()有一个double参数。如果程序没有提供这样的参数,原型将让编译器捕获这样的错误。其次,函数调用结束后,将把返回值放到指定的位置。然后调用函数将从这个位置获取返回值。由于函数原型指出了函数的返回值是double类型,因此编译器知道应检索多少个字节以及如何解释他们。如果没有这些信息,编译器只能进行猜测,但是编译器并不会这么做。


    三,函数原型的功能

    函数原型可以帮助编译器完成许多的工作,同时,它也可以帮助程序极大的降低程序出错的几率。原型可以确保以下几点:

    1,编译器正确处理函数返回值。

    2,编译器检索使用的参数数目是否正确。

    3,编译器检查使用的参数类型是否正确,如果不正确转换为正确的类型。

    int x = 5;
    double val = cube(x);

    首先看上面的函数调用,程序将一个int型的值5传递给cube()。编译器注意到,cube()原型指定一个double类型的参数,因此会将5转换为5.0。

    展开全文
  • 4.4、函数的调用以及函数原型

    千次阅读 2015-03-06 10:59:23
    函数调用的一般形式 函数调用的一般形式为:  函数名([实参表列]); 如果是调用无参函数,则...但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。 函数调用的方式 按函数在语句中的作用来

    函数调用的一般形式

    函数调用的一般形式为:
        函数名([实参表列]);
    如果是调用无参函数,则“实参表列”可以没有,但括号不能省略。如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。 实参与形参按顺序对应,一对一地传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。

    函数调用的方式

    按函数在语句中的作用来分,可以有以下3种函数调用方式:
    1. 函数语句
      把函数调用单独作为一个语句,并不要求函数带回一个值,只是要求函数完成一定的操作。如例4.1中的printstar( );
    2. 函数表达式
      函数出现在一个表达式中,这时要求函数带回一个确定的值以参加表达式的运算。如c=2*max(a, b);
    3. 函数参数
      函数调用作为一个函数的实参。如:
      m=max(a, max(b, c));  //max(b, c)是函数调用,其值作为外层max函数调用的一个实参

    对被调用函数的声明和函数原型

    在一个函数中调用另一个函数(即被调用函数)需要具备以下条件:
    1. 首先被调用的函数必须是已经存在的函数。
    2. 如果使用库函数,一般还应该在本文件开头用#include命令将有关头文件“包含”到本文件中来。
    3. 如果使用用户自己定义的函数,而该函数与调用它的函数(即主调函数)在同一个程序单位中,且位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。

    所谓函数声明(declare),就是在函数尚在未定义的情况下,事先将该函数的有关信息通知编译系统,以便使编译能正常进行。

    【例4.3】对被调用的函数作声明。
    #include <iostream>
    using namespace std;
    int main( )
    {
       float add(float x,float y);  //对add函数作声明
       float a,b,c;
       cout<<"please enter a,b:";
       cin>>a>>b;
       c=add(a,b);
       cout<<"sum="<<c<<endl;
       return 0;
    }
    float add(float x,float y)//定义add函数
    {
       float z;
       z=x+y;
       return (z);
    }

    运行情况如下:
    please enter a, b: 123.68  456.45↙
    sum=580.13

    注意:对函数的定义和声明不是同一件事情。 定义是指对函数功能的确立,包括指定函数名、函数类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。而声明的作用则是把函数的名字、函数类型以及形参的个数、类型和顺序(注意,不包括函数体)通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。

    其实,在函数声明中也可以不写形参名,而只写形参的类型,如
        float add(float, float);

    这种函数声明称为函数原型(function prototype)。使用函数原型是C和C++的一个重要特点。它的作用主要是: 根据函数原型在程序编译阶段对调用函数的合法性进行全面检查。如果发现与函数原型不匹配的函数调用就报告编译出错。它属于语法错误。用户根据屏幕显示的出错信息很容易发现和纠正错误。

    函数原型的一般形式为:
        函数类型 函数名(参数类型1, 参数类型2…);

        函数类型 函数名(参数类型1  参数名1, 参数类型2  参数名2…);

    第(1)种形式是基本的形式。为了便于阅读程序,也允许在函数原型中加上参数名,就成了第(2)种形式。 但编译系统并不检查参数名。因此参数名是什么都无所谓。 上面程序中的声明也可以写成
        float add(float a, float b);  //参数名不用x、y,而用a、b
    效果完全相同。

    应当保证函数原型与函数首部写法上的一致,即函数类型、函数名、参数个数、参数类型和参数顺序必须相同。在函数调用时函数名、实参类型和实参个数应与函数原型一致。

    两点说明:
    1) 前面已说明, 如果被调用函数的定义出现在主调函数之前,可以不必加以声明,否则必须先声明。 因为编译系统已经事先知道了已定义的函数类型,会根据函数首部提供的信息对函数的调用作正确性检查。

    有经验的程序编制人员一般都把main函数写在最前面,这样对整个程序的结构和作用一目了然,统览全局,然后再具体了解各函数的细节。此外,用函数原型来声明函数,还能减少编写程序时可能出现的错误。由于函数声明的位置与函数调用语句的位置比较近,因此在写程序时便于就近参照函数原型来书写函数调用,不易出错。所以应养成对所有用到的函数作声明的习惯。这是保证程序正确性和可读性的重要环节。

    2) 函数声明的位置可以在调用函数所在的函数中,也可以在函数之外。如果函数声明放在函数的外部,在所有函数定义之前,则在各个主调函数中不必对所调用的函数再作声明。例如:
    char letter(char, char); //本行和以下两行函数声明在所有函数之前且在函数外部
    float f(float, float);  //因而作用域是整个文件
    int i(float,  float);
    int main( )
    {…}//在main函数中不必对它所调用的函数作声明
    char letter(char c1, char c2)  //定义letter函数
    {…}
    float f(float x, float y)//定义f函数
    {…}
    int i(float j, float k) //定义i函数
    {…}
    如果一个函数被多个函数所调用,用这种方法比较好,不必在每个主调函数中重复声明。
    展开全文
  • C语言函数原型

    2013-09-11 17:18:00
    在主调函数中调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前要先进行变量说明是一样的。在主调函数中对被调函数作说明的目的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对...
  • CreateThread函数原型

    千次阅读 2013-12-26 09:39:41
    函数原型 MSDN中CreateThread原型: ? 1 2 3 4 5 6 7 8 HANDLE CreateThread(  LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD  SIZE_T dwStackSize, // initial stack ...
  • 单片机C语言C51的函数

    千次阅读 2020-04-07 11:29:10
    函 数 1. 函数的定义 函数定义的一般格式如下: 函数类型 函数名(形式参数表) [reentrant][interrupt m][using n]...函数类型说明函数返回值的类型。 2).函数函数名是用户为自定义函数取的名字以便调...
  • 原型链的理解(全面)

    千次阅读 多人点赞 2020-11-25 16:31:01
    使用构造函数创建一个实例 function Star(age,name) { this.age = age this.name = name this.sing = function(){ console.log("我可以唱歌") } } let ldh = new Star(35,"刘德华") console.log(ldh)//35,...
  • 对于void类型函数调用时不可作为

    千次阅读 2021-05-21 02:33:34
    c语言 void函数怎么调用当n=123114350时, 结果为:c1=3 c2=1 c3=2 int c1, c2, c3; void fun(lon【void的含义】 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎...
  • 第二章习题-ddg.doc

    千次阅读 2021-05-23 03:32:25
    给出以下概念的解释说明。真值机器数数值数据 非数值数据无符号整数带符号整数定点数原码补码 变形补码溢出浮点数尾数阶阶码 移码阶码下溢阶码上溢规格化数左规右规 非规格化数机器零非数(NaN)BCD码逻辑数 ASCII码 ...
  • C语言函数

    万次阅读 多人点赞 2019-08-03 19:54:19
    每个C程序都至少有一个函数,即主函数main(),如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大臃肿...
  • c语言常用系统函数

    千次阅读 2016-07-01 16:39:59
    转:... 常用系统函数 ...常用系统函数.......................................................................................1 附录B...............
  • C++函数模板(模板函数)详解

    万次阅读 多人点赞 2019-07-04 16:03:01
    C++函数模板(模板函数)详解定义用法:函数模板的原理延申用法...所有的类模板函数写在类的外部,在一个cpp中2.5总结关于类模板的几点说明:2.6类模板中的static关键字案例2:以下来自:C++类模板遇上static关键字...
  • 本文主要介绍类的友元函数、虚函数、静态成员、const对象和volatile对象以及指向类成员的指针。 友元函数 从之前的文章可知,当把类中的成员的访问权限定义为私有的或者保护的时,在类的外面,只能通过该类的...
  • C语言 第四章 函数 重点 典型题

    千次阅读 2020-09-22 17:15:37
    7、已知一个函数的定义如下: double fun(int x, double y) {...} 则该函数的正确函数原型声明为( )。 A. double fun(int x,double y) B. fun(int x,double y) C. double fun(int,double) D. fun(x,y) 答案:C...
  • 函数用于实现特定功能,可以互相调用。分为无参函数、有参函数和空函数。在定义函数时定义形参,调用函数时传递实参;函数返回值通过return获得;不带返回值时定义为空类型。函数调用形式为函数名 (实参表列)。C语言...
  • 1、以下关于函数叙述中,错误的是? A、函数未被调用时,系统将不为形参分配内存单元; B、实参与形参的个数必须相等,且实参与形参的类型必须对应一致; C、当形参是变量时,实参可以是常量、变量或表达式; D...
  • c语言函数由哪两部分组成

    千次阅读 2021-05-22 11:43:13
    在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体,函数体是编程语言中定义一个函数功能的所有代码组成的整体,函数头是指函数体之前的所有部分,应用于数学、程序设计领域,作用是给出了该函数的...
  • 【C++】C++类和对象、构造函数和析构函数

    千次阅读 多人点赞 2018-06-03 20:32:37
    它即可包含描述事物的数据,又可包含处理这些数据的函数,类在程序运行时是被用作样板来建立对象的。所以要建立对象,首先必须定义类。 定义类 定义一个类的一般格式为: class 类名{ private: 成员表1; public:...
  • 深入理解断言assert()函数(待整理)

    千次阅读 2014-12-18 11:26:21
     assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include assert.h> void assert( int expression );  assert的作用是现计算表达式 expression ,如果其值为假(即为...
  • C++文件操作成员函数及其使用说明

    千次阅读 2015-04-11 21:19:21
    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来)  ifstream: 读操作(输入)的文件类(由istream引申而来)  fstream: 可同时读写操作的文件类 (由iostream引申而...
  • 深入函数(下)

    千次阅读 2020-01-10 14:46:15
    箭头函数与常规函数行为的差异 命名函数参数 箭头函数如何处理重复的参数 函数重载 构造函数 箭头函数中的 this 不存在的绑定 什么时候不使用箭头函数 定义对象上的方法 动态上下文的回调函数 调用构造函数 ...
  • Python字符串函数strip()原理及用法详解strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。语法:str.strip([chars])str = "*****this ...
  • 关于C语言中fseek函数的使用

    千次阅读 2021-02-07 11:19:35
    关于C语言中fseek函数的使用 fseek函数的基本使用 fseek的注意事项 fseek函数的基本使用 fseek函数的头文件是stdio.h 函数原型: fseek(FILE*, long, space) 第一个参数一个文件指针,很显然是传递打开的文件的 第二...
  • C语言题库(二)

    千次阅读 多人点赞 2020-12-11 21:05:30
    第一章数据类型与表达式 一.知识点 1.C语言的特点:①语言简洁、紧凑,使用方便、...⑵一个函数包括函数的首部(即函数的第一行)和函数体(即花括号部分); ⑶函数体一般包括声明部分和执行部分; ⑷一个...
  • Abs函数(ABS函数怎么用)

    千次阅读 2021-04-22 13:51:30
    主要是他的概念Abs函数 描述 返回数字的绝对值zd。 语法 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则内返回容 Null;如果是未初始化变量,则返.abs函数 描述 返回数字的绝对值。...
  • 《JavaScript 闯关记》之原型原型

    万次阅读 2016-12-20 23:51:16
    原型链是一种机制,指的是 JavaScript 每个对象都有一个内置的 __proto__ 属性指向创建它的构造函数的 prototype(原型)属性。原型链的作用是为了实现对象的继承,要理解原型链,需要先从函数对象、constructor、...
  • c语言变量名、函数名的命名规则

    万次阅读 多人点赞 2019-04-10 14:11:31
    函数原型声明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名;内部函数,只要注释其定义文件名——和调用者在同一文件中(简单程序)时不需要注释。 应确保每个函数声明中的参数的...
  • 函数简介篇——线程相关函数

    千次阅读 2022-04-03 18:14:45
    说明:   本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。   QQ 群 号:513683159 【相互学习】 内容...
  • c, c++函数名编译符号修饰符说明

    千次阅读 2017-10-26 11:19:40
    C++ 编译器的函数名修饰规则  ...LINK程序或其它工具有时须要指定函数的名字修饰来定位函数正确位置。 多数情况下程序猿并不须要知道函数的名字修饰。LINK程序或其它工具会自己主动区分他们。 当然,在某些情况

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,643
精华内容 17,457
关键字:

以下函数原型说明正确的是