私は、今日低レベルの言語とマニュアルメモリ管理に新しい人と、ポインタを説明するために最善を尽くして話していました。これの出力がある再帰ポインタ
#include <stdio.h>
int main()
{
int v = 0;
void* vp = &v;
int i = 0;
for(; i < 10; ++i)
{
printf("vp: %p, &vp: %p\n", vp, &vp);
vp = &vp;
}
}
:
彼はそれを思いついた!
Vpが必要として彼には意味がありませんvp: 0xbfd29bf8, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
= & VP。私はここで何が起こっているのか分からないと言うのは恥ずかしいです。ここで何が起こっていますか?あなたは、コード
vp = &vp;
でこのラインを持っている場合は
Hmn、私はvpに衰弱していませんでしたか?なぜそれはprintfでそうしないのですか? –
@ KimSun-wu:それは腐敗しません。 –
'&vp'は' vp'に崩壊しません。その割り当ては、 'vp'のアドレスを' vp'( 'vp'に属するRAMセル)に格納します。したがって、アドレス '0xbfd29bf4'には値' 0xbfd29bf4'があります。 –