编程中的原型是什么?

格里姆卡斯

这不是关于语言的特定问题,而是更多关于编程的问题。这个问题是在我和一个朋友就“函数原型”开始争论之后提出的,最近我从我的C ++课程中学到了这一点。我向他提到,原型是必须在代码开头创建的函数标头,因此,编译器在进入实际函数之前会在运行时分配一些空间。然后,我们开始讨论是否其他不使用函数原型的编程语言(如Java或python)(就我们而言)实际上是否具有类似于C ++的系统,只是它们自己处理而不是自己处理让用户创建它们。

所以我们很好奇地知道,到底什么是函数原型?它们仅对C / C ++负责,还是其他编程语言使用它们?作为未来的程序员,我是否需要进一步开发?谢谢您的帮助!

约翰·波德

关于C和C ++,单词“ prototype”是指特定的声明语法。

在最早的C版本中,函数定义写为

int func( arg1, arg2, arg3 ) // no types in argument list, just identifiers
  int arg1;
  double arg2;
  char *arg3;
{
  // function body
}

声明写为

int func( ); // no argument list

函数参数列表仅包含标识符,没有类型信息-单独提供。函数声明不包括参数,仅包括返回类型。

引入了C ++,后来C采纳了原型语法的概念,其中类型信息包含在两个定义的参数列表中:

int func( int arg1, double arg2, char *arg3 )
{
  // function body
}

和声明

int func( int, double, char * );

这使编译器可以检查函数调用中参数的数量和类型在参数不匹配时发出诊断,而不必等到运行时才找出问题所在。

虽然仍然支持旧式函数声明和定义语法,但不应将其用于新代码开发-我们几乎到了“原型”一词有点多余的地步,因为原型语法是规范,而不是规范例外。

静态类型的语言(例如Fortran和Pascal和Ada)都具有单独的函数声明,但它们没有将这些声明称为原型。同样,对于C语言,“原型”是指函数声明和定义的特定样式,而不仅仅是其本身的声明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章