C での次の 3 つのポインター宣言の違いは何ですか:
void * const myPointer1;
void const *myPointer2;
const void *myPointer3;
そして、どちらが防止するために使用されます:
myPointer = somethingElse;
C での次の 3 つのポインター宣言の違いは何ですか:
void * const myPointer1;
void const *myPointer2;
const void *myPointer3;
そして、どちらが防止するために使用されます:
myPointer = somethingElse;
規則を右から左に読んでください。
void * const myPointer1;
myPointer1 は へのconstポインタvoidです。
void const *myPointer2;
myPointer2 は へのポインタconst voidです。
const void *myPointer3;
myPointer3 は へのポインタvoid constです。
結論:
myPointer1あなたが探しているものです - それはconstポインタなので、その値は変更できませんmyPointer2とmyPointer3同じものですmyPointer2andmyPointer3は無意味です -- a を逆参照しvoid*ても意味がありませんconstいくつかの場所では、宣言されているものの前に置くことができますconst:
const int * x; // pointer to constant int
const と宣言されているものはいつでもconst 後に置くことができます。
int const * x; // pointer to constant int
int * const x; // constant pointer to int
int const * const x; // constant pointer to constant int
したがって、私の個人的な推奨事項は、常に末尾constを付けることです。これが、一貫して遵守できる唯一の「ルール」だからです。
void * const myPointer1;=myPointer1をvoidへのconstポインタとして宣言しますvoid const *myPointer2;=myPointer3をvoidconstへのポインタとして宣言しますconst void *myPointer3;=myPointer3をconstvoidへのポインタとして宣言しますそのようなちょっとした疑問があるときはいつでも、あなたは使うことができます:: cdecl.org
myPointer1を試して、説明した状態を回避する必要がありconst pointerます。
myPointer1へのconstポインタvoidです。 mypointer2とmyPointer3はどちらも へのポインタconst voidです。myPointer2宣言と宣言の違いは、myPointer3単にスタイルの問題です。
注意:const voidは、ポイントされたデータが であることを意味しますconst。たとえばvoidからとは何の関係もありません。int main(void)