精华内容
下载资源
问答
  • 函数原型&函数声明

    千次阅读 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
    函数原型:类型标识符 被调用函数名(含类型说明的形参表); 函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的...

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

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

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

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

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

    展开全文
  • 这篇片】lseek函数lseek函数详细说明函数原型和头文件lseek函数的详细使用补充命令小结 lseek函数 我们在前面的博客中,简单的用过lseek函数,在这篇博客,我们就来详细的介绍一下,lseek函数的一些具体的情况。 ...

    lseek函数

    我们在前面的博客中,简单的用过lseek函数,在这篇博客,我们就来详细的介绍一下,lseek函数的一些具体的情况。

    先回顾下之前用过的例子:

    我们之前使用的时候目的就是要把文件指针指向文件头才能进行文件数据的读取。使用的位置是在文件读取的时候:

    在这里插入图片描述
    在这里插入图片描述

    lseek函数详细说明

    函数原型和头文件

    #include <sys/types.h>
    		#include <unistd.h>
    	off_t lseek(int fd, off_t offset, int whence);
    

    我们也可以通过帮助手册进行查看:
    man lseek

    在这里插入图片描述

    功能
    调整读写的位置,就像在纸上写字时,挪动笔尖所指位置是一样的。
    C库的标准io函数里面有一个fseek函数,也是用于调整读写位置的,fseek就是对lseek系统函数封装后实现的,后面讲到标准io时,还会讲到fseek函数。

    返回值
    调用成功

    返回当前读写位置相对于文件开始位置的偏移量(字节)。
    可以使用lseek函数获取文件的大小,将文件读写的位置移动到最末尾,然后获取返回值,这个返回值就是文件头与文件尾之间的字节数,也就是文件大小。

    调用失败
    返回-1,并给errno设置错误号。

    参数

    off_t lseek(int fd, off_t offset, int whence);
    

    1)fd:文件描述符,指向打开的文件

    2)whence
    粗定位,选项有:
    SEEK_SET:调到文件起始位置
    SEEK_CUR:调到文件当前读写的位置
    SEEK_END:调到文件末尾位置
    3)offset
    精定位:微调位置
    从whence指定的位置,向前或者向后移动指定字节数。
    为负数:向前移动指定字节数
    为正数:向后移动指定字节数

    不过当whence被指定为SEEK_SET时,如果offset被指定为负数的话,是没有意义,因为已经到文件头上了,在向前移动就越界了,不再当前文件的范围内了,如果非要向前调整,lseek函数会报错。

    注意点

    如果想要在32位系统上操作大于2g的文件,你需要在包含任何头文件前添加宏#define _FILE_OFFSET_BITS 64

    lseek函数的详细使用

    我们首先来演示通过将位置调整到文件末尾所返回的文件大小:
    在这里插入图片描述
    在这里插入图片描述

    执行结果为:
    在这里插入图片描述

    我们可以看到打印出来大小为11,我们查看file.txt里面的内容,我们可以通过ls -l查看文件属性来查看文件大小:
    在这里插入图片描述

    我们再通过以下代码,把文件位置调整到文件末尾,然后再向前移动10个字节:

    在这里插入图片描述
    在这里插入图片描述

    执行结果为:

    在这里插入图片描述

    总共11个字节 向前移动了10个到了第一个字节。从文件开头到文件位置只有一个字节所以size 为1 , 从1的位置看是向后读取 所以读取出来数据为ello world

    补充命令

    od -c 文件 : 以字符形式查看文件内容。
    当你不知道文件内容有一些不可见的字符,或者不知道文件内容的具体情况的时候,我们就可以使用上面命令进行查看分析。

    我们接下来看以下代码,我们这次把文件位置调整到文件头并且在细调整的时候把值设置为负数。

    在这里插入图片描述
    在这里插入图片描述
    执行结果为:
    在这里插入图片描述

    错误为无效参数,已经到了文件头了,再向前移动就会出现越界。

    我们再次进行修改代码 把参数改为:

    lseek  (fd,10.SEEK_CUR);
    

    执行结果为:
    在这里插入图片描述

    我们再次进行修改代码 把参数改为:

    lseek  (fd,10.SEEK_SET);
    

    执行结果为:
    在这里插入图片描述
    我们可以看到上面两个代码的执行结果是一样的。

    出现这样结果的原因就是:
    open这个的时候默认读写位置就是文件头,所以打开文件的时候设置SEEK_SET是没有意义的,设置SEEK_CUR的时候,打开文件之后的读写位置就是文件头,当设置为当前位置的时候,位置是没有移动的。

    那么SEEK_CUR 我们更多的使用的使用是从当前位置向前或者向后移动。

    接下来我们来看一下下面的情况:
    我们设置两个,ret来调整文件位置:
    代码演示:
    在这里插入图片描述
    在这里插入图片描述

    执行结果为:
    在这里插入图片描述

    buf里面没有读取到任何数据,上面的实现就是从文件末尾向前移动10个位置,再从当前位置向后移动10个位置,又到了文件末尾,所以没有读取到任何数据。

    小结

    读者可以自行验证lseek的其他不同参数在文件中组合使用过程中文件位置移动的不同体现。

    展开全文
  • 函数原型

    千次阅读 2008-03-30 13:18:00
    对于用户自定义函数,程序员必须在源代码中说明函数原型。 函数原型是一条程序语句,即它必须以分号结束。它由函数返回类型、函数名和参数表构成,形式为: 返回类型 function(参数表); 参数表包含所有参数的...

      标准库函数的函数原型都在头文件中提供,程序可以用#include指令包含这些原型文件。对于用户自定义函数,程序员必须在源代码中说明函数原型。
      函数原型是一条程序语句,即它必须以分号结束。它由函数返回类型、函数名和参数表构成,形式为:
       返回类型 function(参数表);
      参数表包含所有参数的数据类型,参数之间用逗号分开。在C++中,函数声明就是函数原型。
      函数原型和函数定义在返回类型、函数名和参数表上必须完全一致。如果它们不一致,就会发生编译错误。
      函数原型不必包含参数的名字,而只要包含参数的类型。下面的函数原型声明是合法的。
       int Area(int,int);
      等价于:
       int Area(int length,int width);
      对于标准库函数(简称库函数)来说,编译器从来不把其实际代码看成是程序的组成部分。编译器能够确认是否正确地调用库函数,这是必要的。在头文件中内含的函数声明都是函数原型。
      如果函数原型不正确,编译器会及时报告错误。
      例如,对于程序chl_3.cpp,主函数中的函数调用写成:
       c=max(a,b,56); //error:extra parameter in function call
      则编译器将会报告一个“函数调用中遇到过多的函数参数”之错误。
      又例如,下面的代码中,函数声明与函数定义的函数原型不一致:
       void funcA(int,float);
       void main()
       {
        int a;
        float b;
        funcA(a,b);
       }
        void funcA(int,int)
       {
        //...
       }

      该代码能够正确通过编译,因为函数声明的原型与函数调用相吻合。但在连接时,发现没有与函数声明相一致的函数定义,结果产生“不能确定的外部函数”的连接错误。
      函数返回在声明时约定数据类型。例如:
       int max(int a,int b)
       {
        if(a>b)
         return a;
        else
         return b;
       }

      例中,函数返回的变量a或b是int型的。
      如果返回的是其他基本数据类型,则在返回时,先作隐含的类型转换,然后再返回。例 如,下面的代码中,主函数中的变量a被初始化为3:
       int f()
       {
        return 3.5;
       }
        void main()
       {
        int a=f();
       }

      因为函数f()定义的返回类型是int,所以return语句的值3.5被转换成int型数3之后,返回给主函数,赋给了变量ao
      如果函数返回的是不相容的数据类型(比如,后面介绍的类对象), 则函数将在编译时给出一个“不能将类转换成int"的错误。
      函数的返回值也称函数值。返回的不是函数本身,而是一个值。
      return语句后面的括号是任选的,例如,“return(3);”等价于“return 3;”。
      return语句可用于改变执行顺序。例如:
       int min(int a,int b)
       {
        if(a<b)
         return a;
        else
         return b;
       }

      在这里,return语句还起到了改变计算顺序的作用。因为return是返回语句,它将退出函数体,所以该语句之后的语句不会被执行了:
      无返回的函数也可以使用return,但不能返回值:例如:
       void message(int a)
       {
        if(a>=0)
         return;
         //...
       }

      在这里,return语句起了一个改变语句顺序的作用。
      在有返回类型的函数中,return后面所跟的表达式并不直接替换调用函数,而是先经过求值计算,必要的时候进行类型转换,然后将其存放到内存的某个区域:该区域视编译器的不同而不同,也视返回类型的不同而不同。例如,BC将一个返回整型的数存放在栈区(见5.4节)的位置。在存放到一个专用的区域后,再将其变量的地址传给调用函数,以使调用函数把它作为函数返回值:
      编译器遇到一个函数调用时,需要判断该函数调用是否正确,该机制即函数原型。

      ->main()的返回值
      main()是特殊的函数,它由操作系统调用,返回到操作系统。 函数头void main()是说,不返回任何值给操作系统,所以,在main()函数体的最后,无须“return 1;”之类的语句。如果函数头为int main()或main(),则函数体的最后必须给出“return 1;”之类的语句。
      对于DOS操作系统来说,return 1和return 0都是无所谓的。
      为了省略“return 1;” 这种无谓的操作,本书一律用void main()定义格式。

    展开全文
  • 函数原型 int power(int m, int n) 依次是 函数返回类型、函数名和形参列表 函数原型不需要函数体,也不需要形式参数的名字,用分号作为原型的结束符。 对于形参列表只需要 说明需要几个参数,分别为什么类型...
  • 函数原型!!

    2017-07-01 00:08:14
    函数原型就是使用一个函数前,对一个函数的预先的一个声明,说明下面要用到这样一个函数。函数原型一般由函数名、参数表、返回值类型组成。 函数原型不是必需的。如果你对这个函数的完整定义出现在使用这个函数之前...
  • shmctl  用于Linux进程通信共享...shmctl函数原型   shmctl(共享内存管理) 所需头文件 #include #include 函数说明 完成对共享内存的控制 函数原型 int shmctl(int shmid, int cmd,
  • (2)函数原型的参数表中可不包参数的名字,而只包含它们的类型 int add(int a,int b); int add(); add(); (3)函数定义由函数说明和函数体两个部分构成 二、内联函数 1.作用:消除系统开销,提高运行速度 2.内联...
  • 这是我见过比较好的解释 ... 我们知道main函数的标准原型应该是int main(int argc, char *argv[]);。...因为前面讲过,函数原型中的[]表示指针而不表示数组,等价于char **argv。那为什么要写成ch...
  • 什么是函数原型

    千次阅读 2011-09-28 08:37:05
    学习Delphi后,再学习VC++,才发现居然还有这么多的基础知识...函数原型也叫函数声明,还叫引用说明。其目的是实现先调用函数,后定义函数。 下面举例说明: #include void fun(int n);//这就是函数原型。 int main
  • 但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。 函数调用的方式 按函数在语句中的作用来分,可以有以下3种函数调用方式: 函数语句 把函数调用单独作为一个语句,并不要求函数带回一个值...
  • getaddrinfo函数原型

    2012-07-13 17:39:59
    .getaddrinfo函数原型 函数 参数说明 int getaddrinfo( const char* nodename const char* servname, const struct addrinfo* hints,// struct addrinfo** res ); nodename:...
  • JavaScriptz中说明构造函数属性及实列对象的简单示例function Person(name,age) { this.name = name this.age = age } //构造函数的方法属性Person.prototype.sayName =function(){ console.log(this.name+this.age+...
  • C语言函数原型

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

    2012-09-10 17:43:29
    相关函数 index,memchr,strchr,strrchr 表头文件 ...定义函数 ...函数说明 rindex()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(N
  • 回归正题,简单的说一下所谓的函数声明和函数原型。 关于函数声明和函数原型有什么区别呢? 在网上查阅了大量的中文博客,也没有说明两者具体区别,但是标题依旧是两者的区别。 在此贴上知乎上谭叙的讲解。 函数...
  • realloc函数原型及使用

    2015-03-12 17:02:55
    realloc函数原型及使用  原型:extern void *realloc(void *mem_address, unsigned int newsize);  用法:#include 有些编译器需要#include  功能:改变mem_address所指内存区域的大小为newsize长度...
  • 函数的原型写在类体中,原型说明函数的参数表和返回值。函数的定义可以写在类中,也可以写在类外。 简单的说: class A { public: void B(); private: int C(); protected: bool D(int i); };其中的B...
  • vim自动显示函数原型

    千次阅读 2012-03-22 15:08:03
    2.在编辑时,输入函数和(后就在命令行提示函数原型, 3.详细用途请看它的说明 下载地址: http://www.vim.org/scripts/script.php?script_id=1735 Usage: When you type '(' after a f
  • strcasecmp函数和strncasecmp函数原型

    千次阅读 2011-07-15 20:23:04
    函数说明 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。 返回值 若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值.   ...
  • 一、函数声明 ...函数声明只是对编译系统说明定义的函数的返回值的类型: 不包含函数体(或形参) 函数声明是一个说明语句,必须以分号结束 二、函数定义 1、格式 返回值类型 函数名( 类...
  • 4.4、函数的调用以及函数原型

    千次阅读 2015-03-06 10:59:23
    函数调用的一般形式 函数调用的一般形式为:  函数名([实参表列]); 如果是调用无参函数,则...但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。 函数调用的方式 按函数在语句中的作用来
  • C语言中函数原型的声明(C++中也类似) 1、“先定义,后调用”   比如说把要被调用的函数放在main( )函数前面,符合 “先定义,后调用”的原则。这样在编译时,当主调函数中进行函数调用时,编译器已经知道该...
  • strncat函数原型

    千次阅读 2010-09-14 17:44:00
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符 串。返回指向dest的指针。   #include #include char str1[80] = "Hello, this is my example "; char

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,679
精华内容 3,071
关键字:

函数原型说明