C言語のポインターで星印の有無は何が違うのか

C言語では、ポインタにアスタリスク(*)を付けるか付けないかの違いは宣言での位置と用途である。

  1. この声明のどこにあるか
  2. 声明内で変数名の前にアスタリスク(*)を付けると、変数がポインタ変数になり、メモリアドレスが格納されます。
  3. アスタリスクがない場合は、その変数が普通の変数であることを示します。
  4. 使用目的:
  5. アスタリスク(*)を使用することでポインタの参照解除が可能で、ポインタが指すメモリアドレスの内容にアクセスできます。
  6. アスタリスクをつけずに使えば、通常の変数そのものを参照する。

たとえば

int a = 10;      // 声明一个普通变量a,值为10
int *ptr = &a;  // 声明一个指针变量ptr,存储a的内存地址

printf("%d\n", a);       // 输出10
printf("%d\n", *ptr);   // 输出通过指针访问a的值,即10
printf("%u\n", &a);      // 输出a的内存地址
printf("%u\n", ptr);    // 输出ptr存储的内存地址

上掲の例では、変数aは通常変数であり、ポインタptrを通してaの値にアクセスするには、逆参照演算子*を使用する必要があります。ポインタ変数ptrを宣言するときは、変数名の前にアスタリスク(*)を追加して、変数がポインタ変数であることを示す必要があります。

bannerAds