2016-10-04 17 views
5

Cでは、次のように明確に定義されていますか?変数をその変数へのポインタで初期化

void* ptr = &ptr; 
void* array[1] = {array}; 

言い換えれば、変数のアドレスを使用して変数を初期化できますか?それはGCCコンパイラで動作するようですが、私はそれが私が頼りにできるものかどうかを知りたいだけです。

編集:これは、基本的にそれが合法であるべきであるDefining a pointer to refere to same variable name's reference?

+0

なぜ機能しないと思われますか?私にとって法的に見えます。それは、紙の中に書かれた自分の数字を含む番号付きボックスを持っているのと同じです... –

+0

初期化子が評価される時に、アドレスを持たない変数について心配していますか? –

+0

「明確に定義されている」と思っているかもしれませんが、定義されていないとはっきり言っているものはありません。 'void *'は特別ですが、その特殊性が 'void ** 'に及ぶかどうかはわかりません。 –

答えて

0

の複製です。 ptrはconstではないので、初期化値は.textコード領域では固定されていないため、実行時に認識され、正しい値でRAMに書き込まれます。