【C言語】変数のアドレスとポインタ

アドレスとは

・C言語のアドレスとはメモリの場所を直接表すために使われる、メモリ上の「住所」のこと
・変数の値はコンピュータのメモリに記憶される
・通常、アドレスは16進数で表現される

変数のアドレスを表示する

・アドレス演算子()を使って変数のアドレス(変数の置き場所)を表示する
・アドレスを出力する変換仕様には%pを使う無題

(実行例)
無題


ポインタ

ポインタ・・・アドレスを格納することができる変数
・ポインタの宣言には変数の先頭に*を付ける無題

(実行例)無題


ポインタから変数の値を知る

ポインタに変数のアドレスが格納されると、
そのポインタから逆にたどって、元の変数の値を知ることができる。

 * という演算子を使う。(間接参照演算子)

無題

(実行例)無題


ポインタに別のアドレスを代入する

・ポインタに格納されているアドレスの値は同じ 型の変数のアドレスで上書きできる

無題

(実行例)無題


ポインタを使って変数を変更する

・関節参照演算子(*)を使って、ポインタがさす変数に値を代入できる無題

(実行結果)無題


関数(引数)とポインタ

・関数の値渡し
 実引数の値が渡される(値のコピーを受け取る)
 関数が処理した結果は実引数に反映されない
関数の仮引数をポインタにする(参照渡し)
 間接参照演算子を使って実引数の値を変更可能

[確認] 関数の引数にポインタを使う無題

(実行例)https://paiza.io/projects/gtHQakQz9N0WThQ-LxlBjg
無題

練習問題

問題①無題

(実行例)
https://paiza.io/projects/O4IXcCjMyXIHkocGM-IScA無題

問題➁無題

無題

(実行例)https://paiza.io/projects/l1NENrGSZ-9A7VzdAHyeuw
無題


よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただいております!