首页 > 解决方案 > “void fatal(char *);”是什么意思?

问题描述

我刚开始学习 C,我在给出的一个例子中遇到了这个,我知道这是一个函数原型,但我还没有想到的概念是

void function(char *);

意思是当我最终声明函数时,它会像这样接受一个参数 char 指针参数

void function(char *arg){}

?

标签: cfunctionprototypedeclaration

解决方案


只是为了回答你提出的问题:

“void fatal(char *);”是什么意思?意思是?

这是函数的原型/声明fatalfatal是一个函数,它将指向的指针char作为唯一的参数。

void是函数的返回类型,在这种情况下,这意味着函数不向其调用者返回值,或者如果返回,则返回的值被调用者解释为无效。


函数的原型/声明对fatal()编译器很重要。通过这种方式,首先编译器将“知道”该函数稍后在以下程序中的使用方式,但次要还检查函数的定义、声明和使用之间是否存在任何不一致。


在 C 语言中,您可以在函数声明中省略指向指针的特定标识符char,但在定义中则不能。这是 C 与 C++ 不同的情况;在 C++ 中,也允许在定义中省略标识符。您可以查看此答案中标准中的相应短语。

因此,在 C 中的定义中fatal,您必须为char指针提供一个标识符:

// Definition of function fatal().
void fatal(char *a)
{
    printf("The string of (a) is: %s\n",a);      
}

但是你可以在声明中省略这个:

void fatal(char *);

注意:在调用函数时提供的arguments之间的标识符和函数声明中指定的参数可能会有所不同,例如:

// Declaration (Protoype) of function fatal().
void fatal(char* a);   // parameter a (pointer to char);

int main()
{
    char b[] = "Hello";        // Declaration and Initialization of array b.
    printf("Let´s use the function fatal to print what the string in b is   
            contained of!\n");
    fatal(b);                  // when given as argument to a function, b 
                               // is a pointer to the first element of the char 
                               // array of b.
}

// Definition of function fatal().
void fatal(char* a)
{
    printf("The string of (a) is: %s\n",a);      
}

在此处查看有关参数和参数之间区别的更多信息:参数和参数之间的区别是什么?


从更远的角度来看,“按值传递”和“按引用传递”之间也存在重要区别。指针参数/参数始终是按引用传递。这两个特别是什么以及它们的不同之处在这里得到了最好的解释:按引用传递与按值传递之间有什么区别?

在这个上下文和范围可见性的上下文中,知道你是否有一个标识符x来引用函数中的对象也很重要,调用者可以使用fatal相同的标识符,x反之亦然,以引用一个每个范围内的总不同对象。- 意味着,您可以为不同范围内的不同对象使用相同的标识符(名称),但每个标识符在其范围内只能使用一次。


推荐阅读