int ptInPoly(Point q, Point p[], int n)
我的教授在我的作业中将其称为标题。我发现这令人困惑,并想知道这种不同的使用术语是否常见或只有他做的事情。感谢
以下是关于使用术语标题的更多上下文:
"您的程序必须有一个标题为int ptInPoly(Point q, Point p[], int n)
的函数,用于确定点q是否在p&#34中给出的多边形中;
答案 0 :(得分:3)
正确的术语是函数声明。当显式拼写参数类型时,如您的情况int ptInPoly(Point q, Point p[], int n);
,它也可以称为函数原型。 (非原型格式被认为是非常糟糕的做法,现在很少使用。)函数原型是一个函数声明。
函数声明和函数原型是C标准使用的正式术语。
header 的含义确实是一个头文件,.h
作为扩展名。 C标准使用术语标题来描述头文件。
所以你的教授使用了错误的术语。
答案 1 :(得分:2)
标题永远不是一个正确的术语。 C11标准明确定义 标题 是#include <foo.h>
形式中包含的标题;此处<foo.h>
是标题的名称。因此<stdio.h>
,<stdlib.h>
等标题。 (它们不一定是实际文件,也不是C源代码:C11 footnote 182):
另一方面,签名虽然不是很精确,但稍微好一点,因为它不是标准使用的那个。该标准使用术语 prototype 来声明函数签名,该函数签名指定参数的类型。 (C11 6.2.1p2):182)标题不一定是源文件,也不是&lt;和&gt;头名中的分隔序列必须是有效的源文件名。
[...]函数原型是声明其参数类型的函数的声明。 [...]
为什么签名有些模糊是因为在C中函数不需要原型,但是这样的函数仍然可以考虑具有部分签名,但在最严格意义上不是type signature。此外,无原型声明在C99和C11中被视为 过时 (C11 6.11.6, 6.11.7):
6.11.6函数声明符
1使用带有空括号的函数声明符(不是prototype-format参数类型声明符)是一个过时的功能。
6.11.7函数定义
1使用具有单独参数标识符和声明列表(不是prototype-format参数类型和标识符声明符)的函数定义是一个过时的功能。
因此最好的措辞是
您的程序必须具有原型
int ptInPoly(Point q, Point p[], int n)
的功能,以确定点q
是否位于p
&#34;
答案 2 :(得分:0)
我有同样的问题,我理解这个
int ptInPoly(Point q, Point p[], int n)
是标题,但是
ptInPoly(Point q, Point p[], int n)
称为签名。它被赋予了不同的名称,因为在 函数重载 中,函数的签名(函数名+参数列表)很重要。