2017-10-21 11 views
-2
int main() 
{ 

    int *tab[5]; 
    int i=0; 
    for (;i<5; i++) 
    { 
     tab[i]=&tab[i]; 
    } 

    return 0; 
} 

私は自分のアドレスをタブのすべての要素に割り当てたいと思っています。それはなぜ機能しないのですか?私はそれらの中にポインタのアドレスを書きたい

+6

'&tab [i]'にはどのような種類がありますか?ヒント: 'int *'ではありません。 – Rakete1111

+0

あなたがしようとしているのは、タイプが無限に再帰的である必要があるため、実際には不可能です。 –

+0

ああ、私はポインタの価値としてポインタのアドレスを書くことができないのですか? – icnm

答えて

2

int*の配列では、これを行うことはできません。 &tab[i]int**となるためです。これらのポインタ型は互換性がありません。

しかし、void*ポインタは、任意他のオブジェクトポインタもvoid**のアドレスを保持することができます。したがって、この宣言は:

void* tab[5]; 

あなたのプログラムを整形式に変換します。

+0

しかし、それでは、なぜあなたはそれをやりたいのですか? :D – Rakete1111

+2

@ Rakete1111 - あ、それは言語弁護士ではなく、哲学者のための質問です:P – StoryTeller

関連する問題