Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 参照とデリファレンス | ポインタ
C基礎
セクション 6.  2
single

single

book参照とデリファレンス

メニューを表示するにはスワイプしてください

ポインタは、2つの演算子を中心に構成されています:

  • アドレス演算子 &
  • デリファレンス演算子 *

アドレス演算子

アドレス演算子& で表される)は、コンピュータのRAMと直接やり取りすることを可能にします。& を使用することで、オブジェクトの実際のメモリアドレスを取得できます。

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Note
注意

**アドレス(ポインタ)**を出力する際に使用するフォーマット指定子は %p です。

アドレスは通常、16進数表記で表されます。

間接参照演算子

一方、* 演算子はアドレスを指定すると、そのアドレスに格納されている値(住人の名前)を取得します。それでは、アドレスを直接扱っていない場合、この演算子をどのように利用できるでしょうか?例えば、&x のような式は変数 x のアドレスを返しますが、これに * 演算子を適用した場合(*&x)、そのアドレスに格納されている変数の値を取得できます。

Note
注意

本質的に、*&xx と同じ意味。

Main.c

Main.c

copy
1234567891011121314
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Note
注意

間接参照演算子(*x)と乗算演算子(x*y)を混同しないこと。

タスク

スワイプしてコーディングを開始

  • 5要素の整数型配列を作成し、値を代入します。
  • 3番目の要素のアドレスを取得します。
  • 3番目の要素のアドレスをインクリメントし、そのアドレスをデリファレンスして指している値を出力します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 6.  2
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt