【发布时间】:2021-10-17 01:45:51
【问题描述】:
假设我们有一个简单的函数定义...
void fun(type* var);
我怎么知道在函数中放什么......
- 传递一个指向类型变量的指针,假设函数需要 仅指向一个元素的指针...
type ch = ...;
fun(&ch);
- 传递类型数组,假设函数需要多种类型...
type chArr[] = {...};
fun(chArr);
我知道,我知道数组保存第一个元素的地址,因此您始终可以为每个指针创建一个包含一个值的类型数组,并且代码将是相同的。但是我怎么知道它需要 1 还是 >1 值???
当我们必须通过char* 时情况会变得更糟,因为我们无法知道函数是否需要\0 空终止符才能退出操作...
- 传递一个指向 char 变量的指针,假设函数需要唯一指向一个 char 元素的指针...
char ch = 'A';
fun(&ch);
- 传递 char 数组,假设函数需要许多 char 元素,末尾带有一个空指针...
type chArr[] = "ABC";
fun(chArr);
我知道,您通常从文档中知道要在代码中添加什么,但仍然...您是怎么知道的???
【问题讨论】:
-
"我知道数组保存第一个元素的地址" - 更准确地说,在某些情况下,传递数组会衰减变成指向第一个元素的指针。
-
您的问题到底是什么?阅读文档已经是正确的方法。仅查看函数签名,您无法分辨出许多事情。那么你的观点是什么?如果您询问 C,请不要标记 C++。它们是不同的语言。
-
@JaMiT 我将其编辑为不是咆哮。
-
@UrošJarc 更好,但最后一行对于非咆哮者来说仍然很奇怪:“我知道,您通常从文档中知道要在代码中添加什么,但仍然......你怎么知道???” “你怎么知道?”的答案就在前面的陈述中:“您通常从文档中知道”。休息一下,从头开始重新写这个问题可能是一个好主意,在你从你的想法中清除掉你的胡言乱语之后。