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

 

[GCC]C Compiler on MacBook

MacBookで、C言語開発環境の構築

Macに最初から入っている「テキストエディット」とMacに最初から入っている「ターミナル」から入門できますが、無料で多機能AtomVSCodeを使えこなせるとより本格的にC言語開発できます。

Mac:C言語開発環境

Xcode またはXcode Command Line Toolsを入れる。

Xcode

MacBookでは、Xcodeの開発環境を入れるは普通だか、サイズが大きい。iPhoneのアプリ開発環境も一気に揃う利点があります。

Xcode Command Line Tools

Xcode Command Line Toolsだけ入れるとする。サイズの節約になります。

# xcode-select –install

上記コマンド打って「インストール」を選択するだけでいい!

インストールしたら、確認する:
chen-no-air:bin chen$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
chen-no-air:bin chen$
chen-no-air:bin chen$ git --version
git version 2.6.4 (Apple Git-63)
chen-no-air:bin chen$
Mac: ソースコード作成

Macに最初から入っている「テキストエディット」, 「ターミナル」で使えるVimや無料で多機能AtomVSCodeなどのテキストエディタを使って、以下のプログラムをhello.cというファイル名で作成します。作成したファイルはデスクトップに保存します。

#include<stdio.h>
int main() {
  printf("Hello, World\n");
  return 0;
}

Mac:ソースコードコンパイル(gcc)

次に「Finder」を起動し、「アプリケーション」→「ユーティリティ」から「ターミナル」を起動します。

cdコマンドで作業ディレクトリをデスクトップに移動します。

$ cd ~/Desktop/

gccコマンドで、実行ファイルを指定して、hello.cをコンパイルします。

$ gcc hello.c -o hello

そしたら hello が作られています。

Mac:プログラムの実行

指定した実行ファイルを入力し、プログラムを実行します。

$ ./hello 
Hello, World

無事に実行できました。

参考

  • http://matome.naver.jp/odai/2135755970513071001 — 【Hello World!】MacでC言語プログラミングの勉強をするための準備〜【超初心者】
  • http://www.yoheim.net/blog.php?q=20111218 — [C言語] MacbookでC言語を学習する環境を作る方法
  • http://dotinstall.com/lessons/basic_c — C言語の基礎 (全22回) – ドットインストール