網絡学習管理 速習C言語入門3 C exercises(5) Address

C exercises(5) Address

ポインタの仕組み:アドレスとは

ポインタはC言語(および拡張言語)に特有の概念で、C言語を学び始めた初心者が必ずといっていいほどつまづく概念でもあります。ポインタがどうしても理解できないためにC言語に挫折してしまう方もいます。

p

アドレスの基本

コンピュータの記憶装置(メモリ)には、アドレスが付けられている。

shikumi

変数のアドレス

変数のアドレスを取得するには変数名の前にアンパサンド “&”をつけます。

int a = 123;

printf(“aのアドレス : %p\n”, &a);

配列のアドレス

配列の先頭をアドレスは、配列名だけで示します。要素のアドレスは&配列名[添字]で示します。

#include <stdio.h>

int main()
{
  char str[3] = "AB";

  printf("str[0]の要素のアドレス: %p\n", &str[0]);
  printf("strのアドレス: %p\n", str);

  getch();
  return 0;
}

 

 

二次元配列のアドレス

二次元配列の先頭アドレスは、配列名だけで示します。要素のアドレスは&配列名[行][列]で示します。

値とアドレスの表現

変数、1次元配列、2次元配列の整理

(要素)アドレス 先頭アドレス
変数 変数名 &変数名
1次元配列 配列名[添字] &配列名[添字] 配列名
2次元配列 配列名[行][列] &配列名[行][列] 配列名

 

printf と scanf の引数とアドレス

「値渡し」

int a = 10;
int str[] = "DEF";

printf("%d", a);  // 値渡し
printf("%s", str); // 参照渡し

 

「参照渡し」

int a;
int str[100];

scanf("%d", &a);
scanf("%s", str);

 

演習(P231)

一次元配列とそれぞれの要素のアドレスを表示するプログラムを作成

str[0]の要素の値        : 'A'
str[1]の要素の値        : 'B'
str[2]の要素の値        : 0x0 // 16進数で出力する
str[2]の要素の値        : ' '
str[0]の要素のアドレス  : 0019FF49
str[1]の要素のアドレス  : 0019FF4A
str[2]の要素のアドレス  : 0019FF4B
strの先頭要素のアドレス : 0019FF49

 

1 thought on “C exercises(5) Address”

Leave a Reply

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

CAPTCHA


Related Post

C programming exercisesC programming exercises

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

C exercises(a) Return ValuesC exercises(a) Return Values

ある関数が別の関数を呼び出して、呼び出した関数に制御が戻って来た時に、関数によっては値が返ってくるものがあります。 関数から値を返すには、関数の戻り値の他に、ポインタを使って、関数から呼び出し側の領域を書き換えるも可能です。 値を関数戻り値で返す 関数の定義 戻り値の型 関数名(パラメータリスト) { 文 ... } 関数の戻り値で返す。 この方法では、常に1つの情報しか返すことが出来ません。 2つ以上の情報を返したい時などは不便です。 値を引数の配列に返す 配列の先頭要素のアドレスを引数にして、上位関数側と下位関数側で配列を共有し、見かけ上、複数のデータを返したようにします。 #include <stdio.h> void waru2(int *p); […]