網絡学習管理 速習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(c) Command line arg.C exercises(c) Command line arg.

今まで、main 関数へ引数なしを意味する int main(void) と記述、 実は main関数にも引数を渡すことができます。 この main関数に渡す引数のことを「コマンドライン引数」といいます。 コマンドライン引数 main関数へ渡せる引数は、 引数の総個数 引数の文字列を指すポインタの配列 の 2つです。 一般に int main(int argc, char […]

C exercises(d) Scope and Storage classC exercises(d) Scope and Storage class

変数の通用範囲 自動変数のことを局所変数、外部変数のことをグローバル変数(大域変数)ともいいます。 変数のスコープの範囲を図で表してみます。 赤色で囲った部分がグローバル変数の有効範囲です。 青色で囲った部分がローカル変数の有効範囲です。 この図ではローカル変数の寿命を関数内と説明しましたが、正確にはブロック内です。 ブロックとは、{}で囲まれている範囲のことを指しています。 記憶クラス Cで扱う記憶領域は一般に、プログラム領域、静的領域、スタック領域、ヒープ領域の 4つに大別されます。 記憶クラスには、4つあり、自動、静的、外部、レジスタがあります。 記憶クラス 記憶領域 スコープ 記憶クラス指定子 自動変数 スタック { } の内側 […]

C programming exercisesC programming exercises

【授業の概要】 コンピュータプログラム開発言語の中で広く利用されているC言語をCプログラミング開発環境ソフト: CPad for Borland C++ Compilerを使った一人一台のPCを使い実習により学びます. 毎回問題に取り組み理解を深めます。復習問題としてプログラミング課題を出題する。 【授業要旨】 回数 題目 授業内容 学習課題 予習時間(分) 復習時間(分) 1 ガイダンス 学習目的 C言語プログラミングⅡの試験解説   C言語検定試験について 授業内容を復習する 60 […]