fbpx
维基百科

函数原型

计算机编程中,函数原型(英語:Function prototype)或函数接口(英語:Function interface)是用于指定函数的名称和类型签名元数,参数的数据类型和返回值类型)的一种省略了函数体的函数声明英语Declaration (computer programming)。虽然函数声明规定了函数是如何被实现的,但仅包括对接口的定义(即接受的数据类型和返回的数据类型),并不包括对函数体的定义。

函数原型被广泛应用于CC++ 语言程序代码的上下文中,通过在头文件中放置函数的前向声明来允许将代码拆分为多个翻译单元英语Translation unit (programming)。即编译器可以单独编译目标文件的这部分内容,然后由链接器组合成可执行文件。现代编译器(如Arduino IDE英语Arduino#Software)不再需要函数原型,因为这些是在编译时被确定和声明的。

在原型中,参数名是可选的(C/C++中存在函数原型作用域,这使参数名的作用域被限制在函数定义内),但是,类型和修饰符都是必需的(如指针或常量参数)。

面向对象编程中, 接口和抽象方法的目的与此类似。

举例 编辑

有函数原型如下:

void Sum(int a,int b); 

void Sum(int, int); 

首先,函数原型包括函数签名(英語:function signature),函数名,返回类型和访问修饰符英语Access modifiers。在该例中,函数的名称是“Sum”。函数签名确定参数的数量及其类型。在上面的示例中,返回类型为“void”,这意味着该函数不会返回任何值。要注意的是第一个示例中的参数名称是可选的,甚至實際定義時與函式原型中宣告的不同也沒關係。

应用 编辑

在早期的C语言中,如果一个函数之前没有声明,并且函数名出现在表达式中,后面跟着左括号,那么它会被隐式声明为返回int类型的函数,并且对它的参数没有任何假设。在这种情况下,当函数应用于某些参数时,编译器将无法执行参数类型和语法元数的编译时检查。这可能会导致问题。以下代码说明了隐式声明的函数的行为未定义的情况。

#include <stdio.h> /* 简体中文:  * 如果提供此函数原型,编译器将在main函数中捕获错误。  * 如果省略,则错误可能会被忽略。  */ /* 正體中文:  * 若提供此函式原型,編譯器將在main函式中發現錯誤。  * 若省略,則錯誤可能會被忽略。  */ int MyFunction(int n); /* 简:函数原型 正:函式原型 */  int main( void ) /* 简:调用函数 正:呼叫函式 */ {  printf("%d\n", MyFunction()); /* Error: forgot argument to MyFunction */  return 0; } int MyFunction( int n ) /* 简:被调用的函数声明 正:被呼叫的函式宣告 */ {  if (n == 0)  {  return 1;  }  else  {  return n * MyFunction(n - 1);  } } 

函数MyFunction被调用时会请求一个位于堆栈寄存器中的整型参数。如果省略函数原型,编译器将无法执行此操作,函数MyFunction将在堆栈上的其他一些数据上运行(可能是返回地址英语Return statement或当前不在作用域中的变量的值)。通过包含函数原型,您将通知编译器函数myFunction接受一个整型参数,并使编译器能够捕获这些类型的错误,并使编译过程顺利运行。

通过包含函数原型,你可以告知编译器函数MyFunction接受一个整数参数,并使编译器能够捕获这些类型的错误,使编译过程顺利运行。该特性已从C99标准中删除,因此省略函数原型将导致编译错误。[來源請求]


创建库接口 编辑

通过在头文件中放置函数原型,可以为库指定接口。

声明类 编辑

在C++中,函数原型也在类定义中使用。

参见 编辑

参考文献 编辑

函数原型, 此條目介紹的是函数声明, 关于javascript函数和对象的prototype属性, 请见, javascript, prototype, based, object, oriented, 关于其它, 请见, software, prototyping, 英语, software, prototyping, 此條目需要补充更多来源, 2018年12月17日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而被移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新. 此條目介紹的是函数声明 关于JavaScript函数和对象的prototype属性 请见 JavaScript Prototype based object oriented 关于其它 请见 Software prototyping 英语 Software prototyping 此條目需要补充更多来源 2018年12月17日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 函数原型 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 在计算机编程中 函数原型 英語 Function prototype 或函数接口 英語 Function interface 是用于指定函数的名称和类型签名 元数 参数的数据类型和返回值类型 的一种省略了函数体的函数声明 英语 Declaration computer programming 虽然函数声明规定了函数是如何被实现的 但仅包括对接口的定义 即接受的数据类型和返回的数据类型 并不包括对函数体的定义 函数原型被广泛应用于C C 语言程序代码的上下文中 通过在头文件中放置函数的前向声明来允许将代码拆分为多个翻译单元 英语 Translation unit programming 即编译器可以单独编译目标文件的这部分内容 然后由链接器组合成可执行文件或库 现代编译器 如Arduino IDE 英语 Arduino Software 不再需要函数原型 因为这些是在编译时被确定和声明的 在原型中 参数名是可选的 C C 中存在函数原型作用域 这使参数名的作用域被限制在函数定义内 但是 类型和修饰符都是必需的 如指针或常量参数 在面向对象编程中 接口和抽象方法的目的与此类似 目录 1 举例 2 应用 2 1 创建库接口 2 2 声明类 3 参见 4 参考文献举例 编辑有函数原型如下 void Sum int a int b 或void Sum int int 首先 函数原型包括函数签名 英語 function signature 函数名 返回类型和访问修饰符 英语 Access modifiers 在该例中 函数的名称是 Sum 函数签名确定参数的数量及其类型 在上面的示例中 返回类型为 void 这意味着该函数不会返回任何值 要注意的是第一个示例中的参数名称是可选的 甚至實際定義時與函式原型中宣告的不同也沒關係 应用 编辑在早期的C语言中 如果一个函数之前没有声明 并且函数名出现在表达式中 后面跟着左括号 那么它会被隐式声明为返回int类型的函数 并且对它的参数没有任何假设 在这种情况下 当函数应用于某些参数时 编译器将无法执行参数类型和语法元数的编译时检查 这可能会导致问题 以下代码说明了隐式声明的函数的行为未定义的情况 include lt stdio h gt 简体中文 如果提供此函数原型 编译器将在main函数中捕获错误 如果省略 则错误可能会被忽略 正體中文 若提供此函式原型 編譯器將在main函式中發現錯誤 若省略 則錯誤可能會被忽略 int MyFunction int n 简 函数原型 正 函式原型 int main void 简 调用函数 正 呼叫函式 printf d n MyFunction Error forgot argument to MyFunction return 0 int MyFunction int n 简 被调用的函数声明 正 被呼叫的函式宣告 if n 0 return 1 else return n MyFunction n 1 函数MyFunction被调用时会请求一个位于堆栈或寄存器中的整型参数 如果省略函数原型 编译器将无法执行此操作 函数MyFunction将在堆栈上的其他一些数据上运行 可能是返回地址 英语 Return statement 或当前不在作用域中的变量的值 通过包含函数原型 您将通知编译器函数myFunction接受一个整型参数 并使编译器能够捕获这些类型的错误 并使编译过程顺利运行 通过包含函数原型 你可以告知编译器函数MyFunction接受一个整数参数 并使编译器能够捕获这些类型的错误 使编译过程顺利运行 该特性已从C99标准中删除 因此省略函数原型将导致编译错误 來源請求 创建库接口 编辑 通过在头文件中放置函数原型 可以为库指定接口 声明类 编辑 在C 中 函数原型也在类定义中使用 参见 编辑模块化编程 协议 面向对象程序设计 抽象方法参考文献 编辑Kernighan Brian W Ritchie Afree Dennis M The C Programming Language nbsp 2nd Upper Saddle River NJ Prentice Hall PTR 1988 ISBN 0 13 110362 8 含有內容需登入查看的頁面 link 取自 https zh wikipedia org w index php title 函数原型 amp oldid 70275808, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。