それを実現する方法をどのように驚き!!!

G

grittinjames

Guest
Haiは、まさにこの問題についてコメント、Cでint * p = NULL; * P = 10;のprintf( "%d"の場合、* p);プリント答えが10であり、この10はplzは私に教えて格納されるNULLポインタで
 
あなたはそれを使用する前に、ポインタを指すように有効なアドレスを与える必要があります。ます。int x = 3; int型* P1 / / P1、P2はランダムなアドレスを持っています。int * p2は、* p1は= NULL;未定義アドレスに/ /書き込みゼロ(NULL)/ /未知のアドレス(P1)の含有量(その別の変数によって使用されるかもしれない)* P1 = 10破損している、( "%d"を、* p1)と/ / printfの同じ未定義アドレスに10を書き込み、/ /それはもちろん10が印刷され、10のどこかに格納されていたメモリ/ /しかしここで:P2 = &x; / / p2は我々が知っているアドレス(xのアドレス)を取り* P2 = 3; / /我々は、printfたいアドレスへの書き込み( "%d"は、* p2)は、/ /プリント3
 
【コード】int * pを= NULL; [/コード]これは、pに値(おそらくゼロ)を代入し、pは整数値へのポインタであると宣言しています。 pの指す記憶は今アドレス位置0から始まり、整数を格納するために、必要に応じて次のいくつかの連続した​​場所が含まれています。あなたの整数のサイズが32ビットの場合は、pは今の場所に0〜3に対応するためのリファレンスです。 [コード] * P = 10; [/コード]これはこうして以前にこれらの場所に格納されていたものは何でも上書きし、アドレスの位置0-3(32ビットの整数を想定)で整数値10を格納します。この時点では、おそらくいくつかの他の目的で使われているストレージをゴミ箱に移動しました。 [コード]のprintf( "%d"の場合、* p); [/コード]これは、フェッチと場所0-3の内容を表示します。
 

Welcome to EDABoard.com

Sponsor

Back
Top