如何通过代码或内存空间模型或任何其他方式证明 const char *p 与 char const *p 相同。例如,我定义:
const char *p;
char const *p;
现在从哪里我可以知道它们具有相同的效果?
如何通过代码或内存空间模型或任何其他方式证明 const char *p 与 char const *p 相同。例如,我定义:
const char *p;
char const *p;
现在从哪里我可以知道它们具有相同的效果?
这是一个风格比什么都重要的问题。
至于证明部分:它们是等价的,因为语言规则确保两种语法具有相同的语义。因此,需要实现以确保它们具有相同的效果。您可能想阅读 Stroustrup 的常见问题解答项目:我应该将“const”放在类型之前还是之后?(尽管请注意,C 和 C++ 是不同的语言,后者大量借鉴了前者,直到今天确实试图保持兼容性。)
关键字是一个例外,const
因为在这种情况下,C 标准委员会从 C++ 中借用了一些东西并将其改进为 C。
为了证明这一点,您可以查看标准,您可以通过在网上搜索 n1570.pdf 找到它的最佳近似值。在那里,您看到该术语declaration specifiers
是递归定义的,如
declaration-specifiers:
type-specifier declaration-specifiers(opt)
type-qualifier declaration-specifiers(opt)
(加上其他东西)。从中您可以推断出type-qualifier
可能写在 之前或之后type-specifier
。