広告
↓発売日:2018年09月22日↓
新品価格 |
今回からポインタの解説をしていきたいと思います!
ポインタは直接コンピューターの内部に触れていくので、もし間違った命令をしてしまうと、プログラムの暴走、データの破損などもありえますのでそのへんは自己責任でお願いします!
これからする説明はいろいろ複雑なお話をできるだけ省略して、
プラス少々味付けして説明しますので、正確さを欠く場合もあるかと思いますがそこはお許しください!
例えば
int suji = 10;
と変数「suji」を宣言したとして
この変数「suji」はコンピューターのどこかに保存されてるワケですよね。
このコンピューターがいろいろなデータを保存している場所の事を「メモリ」といいます。
↓メモリ↓
こんな感じで規則正しく並んでます。
番号のふってある下駄箱とかロッカーみたいなものを想像するとわかりやすいかもしれません。
そしてロッカーでいうところの番号にあたる部分を「メモリアドレス」っていいます。
上の図で言うとメモリアドレス2番地のデータは「33」って事ですね。
そしてこの「メモリアドレス」そのものを保存するのがポインタといいます。
「int」や「char」と同じく変数の一種でポインタ変数ともいいます。
広告
では試しにメモリアドレスを表示してみましょう。
/*四日目 プログラム1*/ #include <stdio.h> int main(){ int suji = 10; printf("変数「suji」のメモリアドレス = %p\n",&suji); return 0; }
「112f8e0」と謎の英数字が並んでいます。
実はこの謎の英数字こそがメモリアドレスになります。
そして何度も言いますがこの変数「suji」なんかのメモリアドレスを保存していろいろ使っていきましょう!というのがポインタになります。
ところで
という方いると思います。
これはコンピューターはその時空いているメモリに保存する為、違う結果になります。
本棚に新しく買った本をしまう時って前までに買った本があるから毎回少し違う場所にしまいますよね。
そんな感じです。
話をもとに戻します。
変数のメモリアドレスを知りたい時は頭に「&」をつけます。
この「&」どこかで見たような記憶がありますよね?
そうです!関数「scanf()」の時にも変数の頭につけてました!
このへんについては次回からすこしずつ説明したいと思います。
そして結果のメモリアドレスを表示する時は
「%p」
を使います。これは「%d」なんかと同じでメモリアドレスを16進数で表示してくれます。
というのは数字の進み方の一つです。16までいったら2ケタになります。
わかりづらいですよね。
普通に使うのは10進数といいます。
10までいったら2ケタになります。
0123456789→10
9の次に2ケタになってます。
これと同じように16でケタがあがります。
0123456789abcdef→10
10以上を表す数字がないので代わりにa~fを使います。
という事を踏まえた上でさきほどの結果を見てみると
「112f8e0」
ワケわからんですね・・・。
でも大丈夫です!
今はアドレス計算をする事なんてまずないので
「アドレスを表示する時は「%p」を使って16進数で表示する」
という事だけ覚えてれば大丈夫です!
今回はこのへんで次回、実際にポインタを使っていきましょう!
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |