如何通过代码或内存空间模型或任何其他东西证明const char * p与char const * p相同。 例如,我定义了:
const char *p;
char const *p;
现在我知道他们会采取同样的效果吗?
答案 0 :(得分:5)
风格比什么都重要。
至于证明部分:它们是等价的,因为语言规则确保两种语法都具有相同的语义。因此,实现 required 以确保它们具有相同的效果。您可能希望阅读Stroustrup的FAQ项目:Should I put "const" before or after the type?(但请注意,C和C ++是不同的语言,后者从前者中大量借用,直到今天仍试图保持兼容性。)
const
关键字是一个例外,在这种情况下,C标准委员会从C ++借用了一些内容并将其改装为C.
答案 1 :(得分:1)
为了证明这一点,您可以通过在网上搜索n1570.pdf来查看标准的最佳近似值。在那里,您会看到术语declaration specifiers
以递归方式定义,如
declaration-specifiers:
type-specifier declaration-specifiers(opt)
type-qualifier declaration-specifiers(opt)
(加上其他东西)。由此推断,type-qualifier
可以在type-specifier
之前或之后编写。