2

如何通过代码或内存空间模型或任何其他方式证明 const char *p 与 char const *p 相同。例如,我定义:

const char *p;
char const *p;

现在从哪里我可以知道它们具有相同的效果?

4

2 回答 2

5

这是一个风格比什么都重要的问题。

至于证明部分:它们是等价的,因为语言规则确保两种语法具有相同的语义。因此,需要实现以确保它们具有相同的效果。您可能想阅读 Stroustrup 的常见问题解答项目:我应该将“const”放在类型之前还是之后?(尽管请注意,C 和 C++ 是不同的语言,后者大量借鉴了前者,直到今天确实试图保持兼容性。)

关键字是一个例外,const因为在这种情况下,C 标准委员会从 C++ 中借用了一些东西并将其改进为 C。

于 2012-06-25T09:44:53.863 回答
1

为了证明这一点,您可以查看标准,您可以通过在网上搜索 n1570.pdf 找到它的最佳近似值。在那里,您看到该术语declaration specifiers是递归定义的,如

declaration-specifiers:
type-specifier declaration-specifiers(opt)
type-qualifier declaration-specifiers(opt)

(加上其他东西)。从中您可以推断出type-qualifier可能写在 之前或之后type-specifier

于 2012-06-25T10:15:54.223 回答