C言語のポインタって怖いの?怖くないの?

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!うにゃうにゃエンジニアの猫です(=^・^=)
ITの先輩方からC言語にはポインタっていうものがあって、それがラスボス?か大ボスみたいに大変だと聞きました。
なので、ゆっくり基礎から覚えたことを復習します。

※超超超初心者の備忘録な為、厳密には正確では無いかもしれませんが、
そういう風に理解しているんだなぁと、あたたかい目で見て下さい。

変数aというint型の変数があって、その値が5だとします。
その例を考えてみます。この図を書きました。


右側に変数aを用意しました。値は5です。

変数aは主記憶に格納されていて、変数aがある主記憶の場所には東京都新宿区何丁目…みたいな住所のような物があります。
その住所みたいなものをアドレスって言います。
仮にそのアドレスを100番地とします。


左側には変数aのアドレスを値として持つポインタpがあります。

また、p自体にも北海道稚内市何丁目…みたいなアドレスがあります。
そのアドレスを300番地とします。

ポインタpが見ているアドレスの中身(住人)はaの値で5です。
これをポインタが見ているというのを表す表記として*pを使います。
*p=5になります。

…と、文章と図だけだとイマイチ分かりづらいので、それをプログラミングしてうちのパソコンではどんな感じになるのか調べてみたいと思います。

実行結果です。

プロうグラムはこちらになります。

#include <stdio.h>
int main(void){
int a=5;
int p;    //ポインタ宣言

p=&a;   //ポインタpはaのアドレスを格納

//これらは等しい。aの値を示す
printf(“aの値…a=%d\n”,a);
printf(“pが見ている値…p=%d\n\n”,*p);

//これらは等しい。aのアドレスを示す。
printf(“aのアドレス…&a=%p\n”,&a);
printf(“ポインタpの値…p=%p\n\n”,p);

//これはpが格納されているアドレス。
printf(“ポインタpのアドレス…&p=%p\n”,&p);
}

これで私のアタマはスッキリしました。
ご精読ありがとうございました(=^・^=)

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

C言語で「ねこ」おみくじを作ってみた

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!うにゃうにゃエンジニアの猫です(=^・^=)
今日は、ねこみくじなるものを作りました。
おみくじの猫版です。

・ホワッツマイケル
・ナメネコ
・うちのタマ知りませんか
・ねこあつめ
・にゃんこ大戦争

といった猫にまつわる作品をランダムに表示させます。
といった、猫好きさんの猫ツボを刺激する以外は、
何の役にも立たない乱数プログラムを作りました。

配列 nekoretsuの各要素、要素番号の先頭を[0]として、
[0]ホワッツマイケル
[1]ナメネコ
[2]うちのタマ知りませんか
[3]ねこあつめ
[4]にゃんこ大戦争

という配列を用意します。
その要素番号をランダムな数にすると、猫のおみくじが出来上がります。
乱数を発生させてその乱数を配列の添え字にして、配列の中身の文字列を取り出します。

配列の要素数は5なので、ランダムな数の5で割った余りは、余り0~4になりますので、
各要素番号が乱数になる仕組みです。

では、何が出るかな…。

1回目は
「ナメネコ」

2回目は
「ねこあつめ」

これは猫好きな方にしか分からないかもしれませんが、猫の作品の名前をみるだけで、
うにゃ~~~~~つ(=^・^=)ってなるんです。

コードはこちらになります。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main(void){

srand((unsigned int)time(NULL)); //現在の時刻で乱数の初期化

char *nekoretsu[5]={“ホワッツマイケル”,”うちのタマ知りませんか”,”ナメネコ”,”ねこあつめ”,”にゃんこ大戦争”};

int num=rand()%5;
printf(“%s”,nekoretsu[num]);

}

ではでは、ご精読ありがとうございました、にゃん!

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し