c - 为什么不可能有空数组?
问题描述
我正在浏览 geeksforgeeks,发现我们不能拥有一系列 void 和函数。因为我认为由于函数大小可变(如果我错了,请纠正我)而不允许使用函数数组。
解决方案
函数根本没有大小;函数不是数据。你也不能有一个单一的“函数变量”。这就是为什么你不能有一个函数数组。
同样,你不能有一个 void 数组,因为你不能有一个 void 类型的元素:
void x; // what would this do?
(形式上这是一个错误,因为void
它是一个不完整的类型(并且它不能完成)。)
void
有几个不同的用途(所有这些都属于“非真实类型”的总称):
作为返回类型:
void foo(...);
这表明该函数根本不返回值。
作为参数列表的唯一元素:
T foo(void);
这表明该函数不接受任何参数。从逻辑上讲,您希望 this 的语法是
T foo();
(一个空的参数列表),但是在没有函数原型的标准 C 中已经有了不同的含义。T foo(void)
有点像句法技巧。再次,void
标记没有值。(C++ 简化了事情。在 C++中,与:不带参数
T foo();
的意思相同。)T foo(void);
foo
作为通用指针类型:
void *ptr;
这意味着
ptr
是指向某种数据的指针,但我们不知道它是什么。这是语言规则中的一个特例。它不同于其他指针类型,因为- 我们不能直接使用它(取消引用指针(如中
*ptr
)是一个错误,因为你不能有 type 的值void
) 我们可以将其他(数据)指针类型隐式转换为
void *
:int i = 42; void *ptr; ptr = &i; // 'int *' -> 'void *'
我们可以隐式转换
void *
为其他(数据)指针类型:void *ptr = ...; int *pi; pi = ptr; // 'void *' -> 'int *'
因此,它
void *
被用作一般的“指向未知类型值的指针”。- 我们不能直接使用它(取消引用指针(如中
推荐阅读
- javascript - 三个 js 渲染器大小问题。试图设定一个完美的尺寸
- javascript - 电话号码的正则表达式验证
- javascript - 无法获取数据表中的行数据
- scheduled-tasks - PowerShell 计划作业以重新启动控制台应用程序
- android - 导航抽屉与显示当前位置的地图的链接不起作用
- javascript - 如何验证来自jquery的文本值
- conv-neural-network - 具有自定义损失函数和网络的反向传播
- python - xpath() 返回空列表[]
- hyperledger-fabric - 具有多个订购者的超级账本结构设置
- java - 在 Java 中指向文件的公共 Google Drive 链接 - 如何生成它?