網絡学習管理 速習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 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のインクルードを忘れずに […]

C exercises(9) Basics of FunctionC exercises(9) Basics of Function

関数の基本 C言語において関数を使うことには、以下のような利点があります。 関数化しておくとそれを1つのブラックボックスとして扱うことができます。 つまり、使用する側が知っておくべきことは、以下の通りです。 入力として、どのような引数を与えるか 出力として、関数がどんな値を返すのか 関数を使ったことによって、どんな副作用があるか 一度、関数として作成しておけば、後で何度でも再利用することができる 関数として各機能をまとめていくと、一般にプログラムが見やすく、デバッグの作業もしやすい 関数の呼び出し #include <stdio.h> void func();   //関数のプロトタイプ宣言 int main() { func();    //関数呼び出し printf(" ここがメイン関数内\n"); return 0; } void func()    //自作関数 { […]

C exercises(6) Pointers and VariablesC exercises(6) Pointers and Variables

ポインタの仕組み:ポインタで変数を指す ポインタとは ポインタ (pointer)とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照するものである。有名な例としてはC/C++でのメモリアドレスを表すポインタが挙げられる。(ja.wikipedia.org) ポインタ=メモリアドレス 間接演算子 * と アドレス演算子 & ポインタの使用手順 宣言 アドレスの設定 使用 ポインタで変数 間接演算子を使って、ポインタが指すメモリの値を取得することを間接参照するといいます。 間接演算子を用いれば、アドレスを間接参照するだけではなく、ポインタが表すアドレスに値を間接代入することもできます。 #include <stdio.h> int main() { […]