2

const char * pを証明する方法は、コードやメモリ空間モデルなどを通じてchar const*pと同じです。たとえば、私は次のように定義しました。

const char *p;
char const *p;

今、私はそれらが同じ効果を発揮することを知ることができますか?

4

2 に答える 2

5

何よりもスタイルの問題です。

証明の部分については、言語規則によって両方の構文が同じセマンティクスを持つことが保証されているため、それらは同等です。そのため、実装はそれらが同じ効果を持つことを確認する必要があります。Stroustrup の FAQ 項目を読みたいと思うかもしれません:型の前または後に "const" を置くべきですか? (ただし、C と C++ は異なる言語であることに注意してください。後者は前者から多くを借用しており、今日まで互換性を維持しようとしています。)

このconst場合、C 標準化委員会が C++ から何かを借用し、それを C に改造したという意味で、キーワードは例外です。

于 2012-06-25T09:44:53.863 に答える
1

これを証明するために、Web で 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 に答える