c - “void fatal(char *);”是什么意思?
问题描述
我刚开始学习 C,我在给出的一个例子中遇到了这个,我知道这是一个函数原型,但我还没有想到的概念是
void function(char *);
意思是当我最终声明函数时,它会像这样接受一个参数 char 指针参数
void function(char *arg){}
?
解决方案
只是为了回答你提出的问题:
“void fatal(char *);”是什么意思?意思是?
这是函数的原型/声明fatal
。fatal
是一个函数,它将指向的指针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
反之亦然,以引用一个每个范围内的总不同对象。- 意味着,您可以为不同范围内的不同对象使用相同的标识符(名称),但每个标识符在其范围内只能使用一次。
推荐阅读
- php - 我可以使用 laravel 队列自动删除一些表记录吗?
- node.js - CentOS 7 NodeJs 应用程序 - 502 错误网关
- python - 使用 Numpy 进行傅里叶变换
- java - 单击按钮时随机化数组中的颜色
- typescript - 是否可以在 TypeScript 中使用 `extends` 或 `implements` 强制构造函数参数类型?
- c++ - 这个 C++ 类是否泄漏内存?
- bash - 如何使用shell将具有特定名称要求的文件复制到直接父目录
- wpf - 如何确保 WPF 子菜单在还原模式下不会超出我的主窗口?
- python - 由于无法让浏览器请求通过这些代理和标头,我该如何修复我的代码?
- html - 为什么我的 div 不会堆叠在一起?