網絡学習管理 速習C言語入門3 C exercises(6) Pointers and Variables

C exercises(6) Pointers and Variables

ポインタの仕組み:ポインタで変数を指す

ポインタとは

ポインタ (pointer)とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照するものである。有名な例としてはC/C++でのメモリアドレスを表すポインタが挙げられる。(ja.wikipedia.org)

ポインタ=メモリアドレス

間接演算子 * と アドレス演算子 &

ポインタの使用手順

  1. 宣言
  2. アドレスの設定
  3. 使用

ポインタで変数

間接演算子を使って、ポインタが指すメモリの値を取得することを間接参照するといいます。

間接演算子を用いれば、アドレスを間接参照するだけではなく、ポインタが表すアドレスに値を間接代入することもできます。

#include <stdio.h>

int main() {
  int iVar = 0;
  int *iPo = &iVar;   // 宣言&設定

  printf("*iPo = %d\n" , *iPo);  // 使用

  *iPo = 100; // 間接代入
  printf("iVar = %d\n" , iVar);
  return 0;
}

 

ポインタで配列

配列とポインタは全く別物

配列とは、多数の変数を順番つけでまとめて扱う方法であり、
ポインタとは、変数のショートカットを作る方法です。

文字列を1文字ずつ表示するプログラム

/* 文字列を1文字ずつ表示するプログラム */
#include <stdio.h>

int main(void)
{
  char str[] = "sun";
  char *p;  // 宣言

  p = str;  // 設定
  
  while (*p != '\0') {
    printf("%c ", *p);
    p++;
  }

  return 0;
}

 

演習(P245-2)

str1 に、’ABCDEFGHIJKLMNOPQRSTUVWXYZ’と初期化
str2 に文字列を逆順に格納

コード: a7-2-3.c

実行結果例: a7-2-3.exe

str1 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
str2 = ZYXWVUTSRQPONMLKJIHGFEDCBA

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

C exercises(7) Pointer ArraysC exercises(7) Pointer Arrays

ポインタの配列 複数の文字列をchar型の2次元配列で宣言しました。それを下記に示します。 char kw[3][7] = {"double", "extern", "switch"}; 同様なものをポインタを使って宣言すると、下記のようにポインタの配列となります。 const static char *wday[ ] = { "Sunday", "Monday", "Tuesday", "Wednesday", […]

C exercises (2) stdioC exercises (2) stdio

標準ライブラリ関数 : 標準入出力関数 標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。 標準入力から文字入力 getchar 関数 標準出力から文字出力 putchar 関数 標準入力から文字列入力 gets 関数 […]

C exercises (4) math and utilityC exercises (4) math and utility

数学関数 数学的な計算が必要な場合に使用する命令セットです。引数と返りは全てdouble型になります。 主なもの: sin(x):角度x(ラジアン)のsinの値を返す cos(x):角度x(ラジアン)のcosの値を返す tan(x):角度x(ラジアン)のtanの値を返す pow(x,y):xのy乗の値を返す exp(x):指数関数eのx乗の値を返す log(x):xの自然対数の値を返す log10(x):xの常用対数の値を返す sqrt(x):xの平方根の値を返す ceil(x):小数第一位を切り捨てした値を返す floor(x):小数第一位を切り上げした値を返す round(x):小数第一位を四捨五入した値を返す サンプル: #include <stdio.h> #include <math.h> //math.hのインクルードを忘れずに […]