Learn iPhone, iOS, Objective-c, Swift, cocos2dx, Unity and ….?

iOSやAndroid開発でのエラー解決法や便利tipsのメモ

RSS Feed

Objective-C入門編 〜ポインタ 基礎の基礎、基本のキ〜 其の1

0 Comments
Posted by Kuro on 2013/01/26

スポンサードリンク

Objective-C(基本的にはC言語の話ですが)のポインタについての説明です。

コンピューターは電気信号のon,offで情報を扱っています。(実際は電圧の高低の場合が多いようです)
offを数値の0、onを数値の1とすることで、0と1という数値を使って2種類の状態表せます。
これが1bitという単位です。
これを8組揃えると2の8乗(256)の情報を表せることになります。
この0か1の数値8セットがbyteという単位です。
例えば”0001111111111000″。
このようにコンピュータは2進数で情報を扱います。
2進数はコンピュータが理解するには都合が良いのですが、人間にはとても読みにくいです。
そのため、通常は16進数に変換して表示します。
“0001111111111000”を16進数で表すと”1ff8″になります。

ポインタというのは情報を格納するアドレス(場所)を保持した変数で通常16進数で表されます。

実際にコードを書いて見ていきます。

%(パーセント)は変換指定子といって出力するデータの書式を指定する記号です。
%pはpointer、%dはint、%f、floatなどなど。
&(アンド)はアドレス演算子といってその変数のアドレスを取得します。

出力結果は

0xbfffdb1c

これが10という数値が格納されているアドレスです。

*(アスタリスク)を付けて変数を宣言すると、アドレスを格納するための変数(ポインター変数)になります。
また、*(アスタリスク)を付けて変数を使うとそのアドレスが表すデータを取り出せます。

出力結果は

0xbfffdb1c
10

*(アスタリスク)付けることでそののアドレスに値を代入することができます。

出力結果は

20

30というint型のデータを格納したポインタaddressOfJをaddressOfIに代入すると。

出力結果は

30

さらにjに40を代入するとaddressOfIが保持するデータの値はどうなるか。
addressOfIとaddressOfJは同じアドレスを指し示しているのでjの値を変更すればaddressOfIのデータも変更されるはずです。

出力結果は

40

今日はここまで
たぶん続きます・・・

スポンサードリンク


You can leave a comment, or trackback from your own site.

0 Comments

You can be the first to comment!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

Popular Posts