ビデオ: 【プログラミング講座(C#)】第78回 お絵描きソフトの作成 その4【独り言】 2024
Cプログラミングでは、変数を特定の型として宣言することによって変数の型とサイズが最初に明らかになりますが、sizeofキーワードも使用されます。変数の2番目の記述、その内容は、適切なC言語関数を使用して変数の値を読み取ることで収集できます。
変数の第3の記述は、メモリ内のその位置です。この情報は、&operatorと%pプレースホルダを使用して収集します。
<! - 1 - >O変数、それ以前は何ですか?
#include int main(){char c = 'c'; int i = 123; float f = 98.6;ダブルd = 6. 022E23; printf( "アドレス 'c'%pn"、&c); printf( "i '%pn"、&iのアドレス。 printf( "f '%pnのアドレス、&f); printf( "d '%pnのアドレス、&d); return(0);}
&演算子が変数に接頭辞を付けると、変数の アドレス、 またはそのメモリ内の位置を表す値が返されます。その値は16進数で表されます。その値を表示するには、%P変換文字が使用されます。
<!エクササイズ1: O変数からソースコードを入力すると、それであなたはあなたですか?あなたのエディタに。ビルドして実行します。 演習1で生成されたプログラムの結果は、各コンピュータだけでなく、プログラムが実行されるたびに潜在的にユニークです。
'c'のアドレス0x7fff5fbff8ff 'f'のアドレス0x7fff5fbff8f8のアドレス0x7fff5fbff8f4 'd'のアドレス0x7fff5fbff8e8
変数
c が位置0x7fff5fbff8ffのメモリに格納されます - 小数点位置140 、734、799、804、671です。どちらの値ももちろん些細です。コンピュータはメモリの場所を追跡します。これは私にとってはうまくいきます。 <! - 3 - >
この図は、それらのアドレスがどのようにメモリにマップされるかを示しています。個々の配列要素には、行10の配列のメモリ位置に示されているように、メモリ位置もあります。&演算子は、特定の要素変数に接頭辞を付け、アドレスを起します。 printf()関数の%p変換文字はアドレスを表示します。
ARRAY内のメモリ位置
#include int main(){char hello [] = "Hello!"; int i = 0; while(hello [i]){printf( "%c at%pn"、hello [i]、&hello [i]);エクササイズ2
:
配列内のメモリの場所に表示されているソースコードを使用して、新しいプロジェクトを作成します。ビルドして実行します。再び、メモリロケーション出力は、各コンピュータ上で一意である。 0x7fff5fbff8f0の0x7fff5fbff8f1のHでの H 0x7fff5fbff8f1の0x7fff5fbff8f1の0x7fff5fbff8f3の0x7fff5fbff8f4の0x7fff5fbff8f1のe!at 0x7fff5fbff8f5 練習1の例とは異なり、練習2で生成されたアドレスは1バイトずつ連続してメモリに格納されます。
演習3
:
各要素のメモリアドレスと共にint配列に5つの値を表示するプログラムをコーディングします。配列内のメモリロケーションを使用して、あなたを刺激することができますが、forループは簡単にコーディングできます。
ところで、&memory location演算子はあなたによく知られているはずです。これは、変数自体ではなく、変数のアドレスを必要とするscanf()関数によって使用されます。これは、scanf()がメモリ位置に値を直接配置するためです。どうやって?もちろん、ポインタを使うことで! &演算子はビット単位のAND演算子です。しかし、コンパイラは&がいつ変数に接頭辞を付けるか、&がバイナリ数式方程式の一部であるかを知るのに十分にスマートです。