如何证明const char * p与char const * p相同?

时间:2012-06-25 09:39:27

标签: c

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

const char *p;
char const *p;

现在我知道他们会采取同样的效果吗?

2 个答案:

答案 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之前或之后编写。