C:使用变量后声明变量的效果/意义是什么?
我正在阅读,遇到了一段我不太理解的示例代码(图3.*) 图3.1:C:使用变量后声明变量的效果/意义是什么?,c,syntax,C,Syntax,我正在阅读,遇到了一段我不太理解的示例代码(图3.*) 图3.1: compile(s) char *s; { ... } compile(s) char *s; { if (match(s, "pattern")) { compile("bug"); return; } ... } compile(s) char *s; { if (match(s, "pattern1")) { compile("bu
compile(s)
char *s;
{
...
}
compile(s)
char *s;
{
if (match(s, "pattern")) {
compile("bug");
return;
}
...
}
compile(s)
char *s;
{
if (match(s, "pattern1")) {
compile("bug1");
return;
}
if (match(s, "pattern2")) {
compile("bug2");
return;
}
...
}
图3.2:
compile(s)
char *s;
{
...
}
compile(s)
char *s;
{
if (match(s, "pattern")) {
compile("bug");
return;
}
...
}
compile(s)
char *s;
{
if (match(s, "pattern1")) {
compile("bug1");
return;
}
if (match(s, "pattern2")) {
compile("bug2");
return;
}
...
}
图3.3:
compile(s)
char *s;
{
...
}
compile(s)
char *s;
{
if (match(s, "pattern")) {
compile("bug");
return;
}
...
}
compile(s)
char *s;
{
if (match(s, "pattern1")) {
compile("bug1");
return;
}
if (match(s, "pattern2")) {
compile("bug2");
return;
}
...
}
chars[]的含义是什么代码>在编译之后
另外,为什么有一块代码不属于函数初始化或if/else/while/do语句?这是声明参数类型的K&R风格
名为compile的函数接受名为s的参数,其类型为char[],并返回一个int
很可能是旧代码
现在人们会用这样的东西
int compile(char *s)
{
}
这是一种陈旧的语法,用于声明函数的参数类型。在包含函数及其参数名称的行之后,但在开始函数体的大括号之前声明参数类型
compile(s)
char *s;
{
/* function body goes here */
}
这种奇怪语法的原因是它是从C的前身演变而来的,C没有任何类型声明:变量是一个机器字(“单元”),正确使用它取决于程序员。请参阅中的“B的问题”。如果没有类型,要定义函数,只需编写
compile(s)
{
/* function body goes here */
}
在早期的C中,参数声明是可选的,因此现有代码可以继续工作。如果未声明某个对象的类型,则默认为int
此声明语法是C语言第一个版本的一部分,以关于C的开创性著作Brian Kernighan和Dennis Ritchie的作者命名。在20世纪80年代末和90年代,有一种语言逐渐向新版本或C89或C90过渡(1989年和1990年是规定新版本语言的ANSI和ISO标准出台的年份)。ANSI C的主要变化之一是函数参数的声明方式。在1990年后的C语言中,您可以直接在括号内声明参数的类型,还可以声明函数的返回类型(从C99开始,这是强制性的,尽管如果省略返回类型,许多编译器仍然假定int
)
我看到char*s链接中的code>不是chars[]如果我没有错的话。请注意,char*s
和char*s[]
除了函数参数之外都不同。@Achal作为函数参数(并且仅作为函数参数)是相同的。同意@SteveSummit请删除第一行中的分号。它们不在链接文件中。compile(s)后没有分号代码>。请逐字复制这些例子。@JohnBollinger在链接的文章中,没有分号,所以这个答案是正确的。我在投票。@tos,所提出的问题的答案是错误的,但在意识到问题没有准确引用来源后,我已经颠倒了我的DV。@JohnBollinger确实如此。然而,我认为这是对OP含义的回答。:)@tos-1,如果OP的实际要求明显不同,那么OP的意思并不重要。“当其他人经过,看到问题的当前形式,并认为这个答案正确地回答了这个问题时,会发生什么?”约翰。你认为什么是错误的?