天国にいけるC言語入門 ヘキサ構造体 ver0.401

作者 @solarplexuss

1話目から読む

ユーザー登録をしよう!

ユーザー投稿作品やKADOKAWAの人気作品をもっと便利に読めます。

閲覧履歴

どこまで読んだか忘れても大丈夫。自動的に記憶してくれます。

更新情報

「フォロー」した作家・作品の更新情報がメールで届きます。

マイページ

好きな作品を管理できる、あなた専用の本棚ができます。

必要なもの

ユーザー登録(無料)に必要なのは、メールアドレスだけ! 登録は簡単です。

フォロー機能を活用しよう

カクヨムに登録して、気になる小説の更新を逃さずチェック!

アカウントをお持ちの方はログイン

目次

連載中 全251話

更新

  1. ようこそ 天国にいけるC言語入門 ヘキサ構造体へ
  2. とてもインストール簡単で便利なマイクロソフトVISUAL STUDIO 0.1
  3. コンピュータのメモリにはなぜアドレスがつけられているのでしょうか?アスキーコードのようなものがつくられたのはなぜでしょうか?0.1
  4. アスキーコードを%c出力変換指定子をつかってprintf出力表示すると半角英数字、半角記号が1文字出力されます
  5. 仮設の仮説コーナー 半角英数字が1バイト、全角文字のデータが2バイトに格納されているとはどういうことなのか 考察してみる 0.3
  6. GCCコンパイラについて
  7. これからは本当に遊ぶだけの楽しい世界になりそうです。 3連2分音符♪
  8. ヘッダファイル< float.h>とは変数の型floatに関する情報を含んでいます
  9. 素敵な詩 FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038   0.1
  10. ヘッダファイルとはなんですか?
  11. このヘキサ構造体、ヘキサ、フォーミュラのエピソードが本書を貫く基本的な概念になっています。
  12. ヘキサ構造体、ヘキサ、フォーミュラ(標準Cライブラリの説明もありますの)0.1
  13. C言語のヴァージョン C99 C11 ヘッダファイル<stdio.h>、標準入出力とは何のことでしょうか? 
  14. ソースコードがコンパイルされて機械語となりコンピュータに実行されていく様子を観察してみましょう
  15. CPU
  16. アドレスとは アドレスはコンピュータ内のメモリ,1バイトごとにつけられた数値を格納する場所の住所のことです  0.1
  17. int型の変数aは4バイトの格納容量を持ち1バイトごとにアドレスがつけられています。アドレスを表示するにはアドレス表示専用の%p出力変換指定子をもちいます 0.2
  18. scanf関数は格納する変数のアドレスに宛てて数値を格納する。0.1
  19. ヨハン・パッヘルベル
  20. %x出力変換指定子は整数値を16進数としてprintf出力表示する 0.3
  21. 2進数を簡単に16進数に変換してみよう 0.4
  22. パソコンのアクセサリの電卓は2進数,8進数,16進数同士の計算もでき2進数から16進数への変換も簡単にできるんですよ。ぜひ使ってみてください。
  23. では 音楽ソフトdominoをつかって音楽をつくってみよう。
  24. 代入演算子 += -= *= /= の仕組みをみていきましょう。
  25. インクリメント演算子a++はaの値にさらに1を足す,デクリメント演算子a--はaの値から1を引くという機能があります。
  26. インクリメント演算子++ ++aとa++の違いはどのようなときにでてくるのかな 0.1
  27. それでは++a++はどうプログラム内でうごくかな? 0.1
  28. 単項演算子+とーと二項演算子++の仕組みをくわしくみていきましょう。0.1
  29. 引き算 掛け算 割り算 を足し算で表現してみたい  まずは「引き算」を足し算のみを用いて計算してみます 0.1
  30. 次は 「掛け算」を足し算のみを用いて計算してみます
  31. 「割り算」を足し算のみで計算してみます そして なぜ整数値同士の割り算の計算結果が整数になるのかについて考察してみます
  32. 「%f出力変換指定子の小数点以下6位までしか計算結果を表示しない」 というしばりから離れてさらに小さな位の数をもとめる 0.1
  33. 音楽ソフトDominoをつかってCFGCコード進行で小さな曲をつくってみる。
  34. for文は命令文を繰り返し実行するシステムとなってるの  0.1
  35. for文の()内の初期化式、条件式、継続処理方法を書いたり書かなかったりするとどうなるでしょうか モンスター数値さん、お久しぶりです 0.1
  36. for文の()内の初期化式、条件式、継続処理方法を書いたり書かなかったりするとどうなるでしょうか 全部で8通りのパターンを考察してみよう
  37. それでは for文の8つの基本パターンで遊んでみる。0.1
  38. この章では陽気なscanfお蛇さん🐍と いっしょに scanf関数の性質をしらべてみましょう
  39. 新種の蛇 scanf 0.2
  40. マイクロソフト社のVisual Studioをお使いの方はscanfではなくscanf_sとプログラムに記入してください Visual Studioではscanf関数をつかうとビルドエラーになります
  41. うねる蛇 ソーラーの片腕 0.1
  42. scanf_s関数はマイクロソフト社専用の特別製の関数でありマイクロソフト社以外のコンパイラをお使いの方は scanf_s関数はつかえませんのでscanf関数をお使いください
  43. 新種の蛇scanf お昼さがり 0.1
  44. 元気なscanf関数  0.2
  45. 蛇フード 0.1
  46. こうしてヘッダファイル<stdio.h>にscanfとprintfは格納されるようになったのか? 0.10
  47. scanf関数をつかって変数aに数値を格納するとき変数aは初期化されていても数値を受け取ることはできます
  48. scanf関数に%d出力変換指定子を用いてひらがなを入力、printf出力表示したとき画面にでてくるモンスター数値-1073741824を2進数で表してみる(2の補数さんおひさしぶりです)
  49. 自作関数を導入してみます 自分で関数を作製して使用することができます その方法はどうなってるのかな?
  50. 自作関数1 ソーラーといっしょに関数を自作してみましょう void newmadefunction(void)  0.1
  51. ⛵⛵⛵漁じゃ,ははは、漁じゃあ~~~🚢🌊🌊🌊🌊🌊🌊
  52. ソーラーとマックスの一本釣り int main漁
  53. 自作関数2 変数xを引数にもつ自作関数void fanction(int x)について考察してみる int xをxと記述してもよいのでしょうか? 0.1
  54. 自作関数3 C言語大漁捕獲 戻り値を格納する自作関数について考察する 0.8
  55. ハ長調とは何のことでしょうか 0.1
  56. 自作関数4 main関数に なぜInt型 がくっついているのでしょうか return 0; は 何のためにあるのでしょうか? 0.2
  57. getchar関数は数値、文字にかかわらず🍎半角英数字は すべて文字として🍎 変数の型charに格納します 0.3
  58. 論理式とはなんでしょうか 論理式は 0か1の値をもちます 0.1
  59. 論理演算子&& 論理式かつ論理式のような組み合わせも0か1の値をもちます 0.1
  60. 論理演算子||は数学における和集合Uとはちょっと違います 0.1
  61. 今日は楽しいひなまつり 
  62. 論理否定 !演算子は論理式が持っている値を0なら1へ1なら0へひっくり返します。 0.1
  63. if文から はじめてみよう。
  64. 複数の命令文をif文によって実行するにはブロック{}でくくります  0.1
  65. if else 文とif else if 文を観察してみましょう。0.1
  66. if文(入れ子)ネスト構造をつくって if()文の()の中の論理式の使われ方について学んでみましょう。  
  67. if文ネスト多重構造をつくってみよっ  その2 0.1
  68. if文ネスト多構造をよみとってみよう  その3 0.1
  69. カスタマイズが楽しいswitch 文
  70. scanf関数とswitch 文をくみあわせてみよう\(^o^)/ その2
  71. switch 文をif else文で変換して書き表してみる 0.2 
  72. while文もfor文と同じく命令文をくりかえし実行します
  73. コントローラーボタンの入力を受け付けるプログラムのプロトタイプを創造する 0.1
  74. if()continue;文はfor文の中でもちいられ if()の条件式が1の値(真の値)を持つときはその繰り返しの回の命令文を実行しません 0.1
  75. do{}while文()は条件式が0の値(偽)となっても最低1回は命令文を繰り返すシステムです
  76. ヴィヴァルディ 四季 第一楽章を音楽ソフトMuse scoreとDominoで演奏してみる。
  77. break文でおはようございます。
  78. if() continue文を使用する際は()の中の条件式の記述方法にご注意ください 0.1
  79. for文による繰り返しの中 if()continue文でとばされた回の命令文の代わりとなる別の命令文を実行させてみよう 猫の喜びの声が聞こえる・・・
  80. if()continue;文でもっともっと遊んでみる if(0)continue;文はどのように動作するかな? 天Cのフランス語と芸人
  81. for文にfor文を代入してみる   for文ネスト(入れ子)構造はどうなっているの?
  82. for文3重奏 for文{for文{for文}}  
  83. 自作関数5 自作関数のプロトタイプ宣言をおこなってみる   0.2
  84. 自作関数6 💃ローカル変数とは ある関数の中で定義された変数のことです
  85. 自作関数7 ローカル変数とは ある関数の中で定義された変数のことです その2
  86. 自作関数8 ダミー ローカル変数とは ある関数の中で定義された変数のことです その3
  87. 自作関数9 自作関数の引数はvoid f(int x)のように記述しvoid f(x)と記述してはいけません。
  88. まずは変数のスコープについて学んでみましょう。変数のスコープとは変数宣言された変数が使用できる範囲のことです
  89. 自作関数10 main関数内で自作関数f(int a)がf(1);と記述されている場合 1は《《自作関数内のint a;》》に代入されています。
  90. 変数のスコープと変数の寿命について学んでいきましょう。これらが理解できると どの位置で変数宣言をおこなえばよいのかがよくわかるようになります
  91. 自作関数11 グローバル変数は 異なる関数同士でも共通して使えます その影響範囲(スコープ)はプログラム全体となります
  92. 自作関数12 グローバル変数とローカル変数のスコープ(影響範囲)を考察してみましょう。
  93. ローカル変数のスコープ(影響範囲)は そのローカル変数が宣言された{}(ブロック)内となります
  94. 複数のローカル変数のスコープ(影響範囲)を考察してみましょう。
  95. 複数のローカル変数のスコープ(影響範囲)を考察してみましょう。その2
  96. 次に変数の寿命について学んでみましょう。変数に関するデータはコンピュータのメモリに保存されるだけでなく消去もされます。どの時点で消去されるのでしょうか?😊
  97. ローカル変数はそのローカル変数が定義された{}ブロック内の命令文がすべて実行されるとそのローカル変数に格納された値とともにコンピュータのメモリから消えてしまいます。
  98. 自作関数13ローカル変数のデータ情報はローカル変数が定義されたブロック内の命令文がすべて実行されるとコンピュータのメモリから消えてしまいます。そこでデータ情報維持のためにstaticがもちいられます。
  99. 自14 static変数が定義された自作関数が実行されたあともstatic変数に格納された数値データは保存されます ですがローカル変数なのでmain関数で定義された同じ名前の変数には影響を与えません
  100. 自作関数15 自作関数void f(int x)のint xにmain関数で定義された変数aを代入しても変数aはmain関数のローカル変数のままです。
  101. void f(int x)型の自作関数のスコープも自作関数の定義のブロック内となります
  102. void f(int x){}型の自作関数の()内で変数宣言されたint xに代入されたデータはブロック{}内の命令文が実行されると変数xごとコンピュータのメモリから消えてしまいます
  103. それでは変数のスコープをよりよく理解できる次のおもしろ問題にチャレンジしてみましょう。
  104. scanf関数をつかって変数aに数値7を格納してみます ただしこのプログラムでは5つのaの変数宣言が行われています 一体どの変数aに数値7は格納されるのでしょうか?
  105. scanf関数をつかって変数aに数値7を格納してみます ただしこのプログラムでは5つのaの変数宣言が行われています 一体どの変数aに数値7は格納されるのでしょうか?  解答で~す
  106. 配列の仕組みを学んでみましょう!
  107. 配列内に作成される入れ物の数と格納する数値の数の関係をしらべてみましょう
  108. 配列にはint型配列やfloat型配列などがあります。つまり格納できる数値は整数値か実数値のどちらかの数値しか格納していけません。
  109. 配列をつかうと どのよう簡単にプログラムが記述できるのか一緒にみていきましょう
  110. 変数aに変数bをa=b;と代入したように配列hairetuboxに配列hairetuhakoをhairetubox=hairetuhako;のように直接代入して中身のデータを渡すことはできません😊
  111. AMD FX8120
  112. とても簡単にできる完全無音パソコン環境の構築の仕方(笑)0.1
  113. scanf関数をつかって配列へ数値を格納する 0.1
  114. 2次元配列を作製数値を格納してみる。やはり簡単でした。
  115. 2次元配列に簡単な方法を使って数値を格納(初期化)してみましょう
  116. 3次元配列を簡単に初期化してみる 0.2
  117. おまけのコーナー 4次元配列もつくってみよう。
  118. おまけのコーナー 5次元配列をつくれるか 試してみる  0.1
  119. 数値だけでなく'文字' a,b,cなど を配列に格納してみようよ もちろん簡単な初期化方法をつかってみます
  120. おまけのコーナー 9次元配列 前半 0.1
  121. aやbのような1文字だけでなく文字列nekoを配列に格納してみよう 0.1
  122. もっと簡単に配列に文字列nekoを格納(配列の初期化)してみる 0.1
  123. char型の配列にひらがなの文字列を格納してみます そのときひらがなの文字列はchar型の配列内に生成された文字のいれものにどのように格納されているのでしょうか?
  124. おまけのコーナー 9次元配列 後半 天国にいけるC言語入門技 天国にいけるまで手計算」
  125. 9次元配列をつかってあなたの健康度チェック プログラムのバグの訂正に成功しました 0.2
  126. おまけのコーナー 10次元配列宣言、初期化
  127. おまけのコーナー 11次元配列を作製する。
  128. おまけのコーナー 12次元配列から24次元配列まで作製する
  129. おまけのコーナー12次元配列から24次元配列まで作製する その2 16次元配列と17次元配列を作製する
  130. scanf関数をつかって文字を1文字だけchar型の変数に格納する
  131. 文字列nekoをscanf関数をつかって配列に格納する。文字列を格納できるということは1文字の文字列だけ格納することもできます。やったね💖
  132. ひらがなの文字列ねこもscanf関数をつかって配列に格納することができます 0.2
  133. 🌞scanf関数をつかって空白を含んだ文字列Hello nyannkoを配列にとりこむことができます その際Hello nyannkoは配列内にどのように格納されているのでしょうか?
  134. scanfとscanf_sの違いとは何でしょうか?
  135. if文とヘッダファイル<string.h>に格納されているstrcmp関数を使って 入力された文字列によって実行される命令文を変更してみましょう。
  136. 配列の中に格納されている文字列の文字数を数えるstrlen関数です 文字列が半角英数字の場合 
  137. 配列の中に格納されている文字列の文字数を調べるstrlen関数です 文字列が ひらがな、カタカナ、漢字の場合 
  138. 配列の中に格納されている文字の文字数を調べるstrlen関数です 文字列が絵文字🐈🐘🍅の場合
  139. sizeof演算子で配列の格納可能容量(バイト数)を調べてみます  0.1
  140. おまけのコーナー 配列の中に格納されている文字列の数を数え上げるstrlen関数をつかって配列の中に格納されている数値の数を数え上げる w
  141. 配列のなかに格納されている数値の数をstrlen関数を使って数え上げる。2次元配列編
  142. おまけのコーナー 文字列でなく数値を格納した配列の格納容量をsizeof演算子で調べる
  143. おまけのコーナー 実際に17次元配列に格納された数値の個数をsizeof演算子をつかって17次元配列の格納容量(格納できるバイト数)を求める方法をつかって間接的に調べてみましょう。
  144. strcat関数を使って異なる配列内に格納されている文字列同士を連結させてみましょう  さらにfor文を使って文字列を繰り返し連続接続してみます
  145. ここでポインタ変数を導入してみます
  146. メモリとアドレスと変数の関係について学んでみましょう 0.1
  147. ポインタ変数とは 変数のアドレスを格納するための変数のことです 0.2
  148. 変数のアドレスがポインタ変数に格納された場合 ポインタ変数をつかって変数内に格納されている数値をもとめることができます💖 0.1
  149. 👇のエピソードをみればおわかりになられますように ポインタ変数の特徴は指定したアドレスの場所に格納されている数値を変更できることにあります 
  150. ポインタ変数をつかえば ポインタ変数にアドレスを代入することにより そのアドレスの場所のメモリに格納されている数値を変更することができます
  151. ですので このことを意識しているとポインタ変数の使い方をよりよく理解できるようになります
  152. 天国にいけるC言語入門 ヘキサ構造体 特別企画  佐月 詩さん 原作「フェアリーウェイト」2次創作映画〚ft王〛上映会 & 次回超大作告知
  153. 配列のポインタ変数とは一体何のことでしょうか? 0.1
  154. 配列には自分で作製しなくとも配列を作った時点で配列専用のポインタ変数が用意されているのですの😚  0.1
  155. 配列に数値を格納した場合の配列内の各いれもののアドレスはどうなっているのでしょうか?調べてみます。
  156. 配列に文字列を格納した場合の配列内の各いれもののアドレスはどうなっているのでしょうか?調べてみます。0.1
  157. 配列の代わりにポインタ変数をつかって文字列を格納してみます 0.4
  158. 文字列を格納するchar hairetu[ ]="nekoneko"とchar *hairetu="nekoneko"の構造を文字列が格納される場所のアドレスを求めて比較してみます
  159. 配列ではできませんが 複数の文字列を1つのポインタ変数宣言を使い同時にメモリに格納してみます 0.1
  160. おさらい 自作関数newmadefunction(int x);が実行されている間は ローカル変数xに格納されている数値はコンピュータのメモリに格納されていますが実行後は消えてしまうのでした
  161. 値渡しについてご説明いたします
  162. 実引数と仮引数とは?実引数から仮引数への値渡しとはなんのことでしょうか? 0.6
  163. グローバル変数bを自作関数の引数の変数aに代入した場合も値渡しとなるためグローバル変数bは自作関数の操作を受けることはなくグローバル変数bに格納されている数値は変更されません。
  164. グローバル変数bを自作関数の引数となったグローバル変数bに代入した場合も値渡しとなるためグローバル変数bは自作関数の操作を受けることはなくグローバル変数bに格納されている数値は変更されません。
  165. おまけのコーナー 24次元配列を作製する  その3
  166. 参照渡しの具体例はmain関数内で定義された変数aのアドレスを自作関数内で定義されたポインタ変数ptxに代入することですね
  167. 🌞🌞🌞参照渡しとは自作関数の引数にポインタ変数をつかい実引数のアドレスをポインタ変数に渡す方法のことなのです🌞🌞🌞
  168. ですので変数aのアドレスに格納されている数値を表す'ptx'をつかい変数aのアドレスに格納されている数値を変更することができます
  169. 参照渡しが行われるときの自作関数の構造を分析してみましょう そのために自作関数の部分を元の命令文の集まりに戻してみます
  170. すなわち main関数内で定義された変数aの格納している値を変更することができます
  171. 配列を自作関数の引数に用いて複数のデータを同時に自作関数にかけることができます
  172. このことは ゲームキャラクターが移動することやゲームキャラのHPやMPの値が変化することと関係しています 
  173. 👆このことは ゲームキャラクターが移動することやゲームキャラのHPやMPの値が変化することと関係しています 
  174. 配列を自作関数の引数に設定することができます。main関数で定義された配列を代入することができます。その際ポインタ変数を使った参照渡しをされます 値渡しの方法はありません 0.3
  175. main関数内で定義された配列に格納されているデータをポインタ変数を使った自作関数によって操作を加え変更してみましょう そのため配列のアドレスを自作関数の引数に参照渡しする方法を学んでみましょう
  176. main関数内で定義された配列内の数値の入れ物に格納されているデータを自作関数に値渡しすると自作関数はうまく機能しません
  177. 1つのポインタ変数宣言をつかって複数の文字や文字列をコンピュータのメモリに1度に格納する方法はあるのですが複数の数値を格納する方法はないのです
  178. 自作関数の引数にポインタ変数宣言や配列宣言をつかってmain関数内で作成された配列のデータを参照渡しすることができます 0.2
  179. ポインタ変数や配列をつかって数値や文字、文字列 をコンピュータのメモリに格納する方法 まとめ
  180. この章ではハードディスク内にファイルを自作しデータを保存する方法を学んでいきましょう ゲームでいえばセーブデータを保存することにあたります
  181. ファイルポインタ変数宣言とfopen関数の書式設定をおこないハードディスク内にデータを保存するためのファイルを作製します
  182. ハードディスク内にファイル作成編(こちらはVisual studio以外の統合開発環境をお使いの方用です。Visual studioをお使いの方用は巻末にあります)
  183. 他の統合開発環境とVisual Studioで別々に章を設けて解説をおこなっていきます。
  184. Visual Studioではfopen関数はそのままでは使えません。ソースコードの冒頭に#pragma warning(disable: 4996)を記述してください
  185. fputs関数とfprintf関数を用いてハードディスク内に作成したファイルにデータを書き込みます。このときもまずデータはコンピュータのメモリに格納されてからハードディスク内のファイルに保存されます
  186. 👆ハードディスク内のファイルにデータを保存する場合、まずはデータはコンピュータのメモリに保存されてからハードディスク内のファイルに保存されます。
  187. オープンモード "w" でファイルを開くと開いただけでファイルは初期化されて前に格納されたデータはきえてしまいます
  188. ファイルポインタ変数とは何のことでしょうか。ファイルポインタ変数の仕組みをもう少し詳しく観察してみましょう。
  189. ファイルポインタ変数宣言とfopen関数の設定を2つ行い同時にハードディスク内に2つのファイルを作製してみましょう。
  190. ハードディスク内のファイルにデータを追加で保存するにはファイルを開くとき オープンモード"a"をもちいます
  191. 実はハードディスク内のファイルにデータを保存するのにfclose関数をつかってファイルを閉じる必要はありません。
  192. fprintf関数によってデータをハードディスク内のファイルへ保存するには fclose関数によってファイルを閉じる必要はありません
  193. ちょっと休憩しています
  194. 👇ハードディスク内に保存されているデータを利用する場合も、ハードディスク内に保存されているデータはコンピュータのメモリに保存されてから利用可能となります
  195. ハードディスク内に作成したファイルをオープンモード"r"で開きデータを読み込んでみます 
  196. ユーザーから渡されたデータはまずコンピュータのメモリに保存されるのはコンピュータの基本的なシステムでした
  197. 読み取りオープンモード"r"の代わりに追加書き込みオープンモード "a" をつかっても ハードディスク内のファイルに保存したデータをコマンドプロンプト画面に表示することはできません
  198. ハードディスク内のファイルにデータを保存する場合もハードディスク内のファイルを利用する場合も、そのシステムは機能しています
  199. 読み込みオープンモード"r"の代わりに新規書き込みオープンモード "w" をつかっても ハードディスク内のファイルに保存したデータをコマンドプロンプト画面に表示することはできません
  200. ファイルにデータがなにも保存されてない状態でオープンモード"r"でファイルをひらきデータを読み取りprintf表示したなら どのようなデータがコマンドプロンプト画面に表示されるでしょうか
  201. 👇実はハードディスク内のファイルを開くのにどのようなファイルポインタ変数を用いても構いません。
  202. 実はハードディスク内のファイルを開くのにfp,rp,spなど自由にどのような変数名を用いても構いません。なぜなら・・・
  203. このこともユーザーから渡されたデータはまずコンピュータのメモリに保存されるというコンピュータの基本的なシステムが関係しています
  204. オープンモード "w+" , "r+", "a+" について考察してみよう
  205. 読み込みモードと書き込みモードをあわせもつオープンモード”w+”,"r+","a+"ですが ファイルが開かれ閉じられるまでに1度に使えるのは書き込み機能か読み込み機能のどちらか1つだけです
  206. オープンモード "w+" の新規書き込み機能について考察してみよう
  207. オープンモード”w+”,"r+","a+"が読み込みモードになるか書き込みモードになるかは最初にfscanf関数がつかわれるかfprintf関数が使われるかによって決まります。
  208. オープンモード "r+" の新規書き込み機能について考察してみよう
  209. オープンモード "a+" の追加書き込み機能について考察してみよう
  210. オープンモード "w+"の読み込み機能について 考察してみよう 今のところ読み込み機能が働くところを観測できません。読み込み機能は機能していないかもしれません。 
  211. オープンモード "r+"の読み込み機能について 考察してみよう
  212. オープンモード "a+"の読み込み機能について 考察してみよう
  213. fclose関数にはファイルを閉じるという機能のほかに ファイルの書き込みモード、読み込みモードを解除するという面も持っています
  214. 同じプログラム内で fprintf関数を使って保存された数値を fscanf関数を使って配列に取り込むにはデータを保存後1度ファイルを閉じて書き込みモードを解除する必要があります。が
  215. fscanf関数を使った後に fprintf関数を使う場合でもfclose関数を使い1度ファイルを閉じ、読み込みモードから書き込みモードに変更する必要があります
  216. データをコンピュータが直接扱えるバイナリデータに変換しファイルに保存してみよう そのファイルはバイナリファイルと呼ばれます
  217. バイナリデータとしてファイルに保存されたデータをfread関数を使って配列に読み込んだ後コマンドプロンプト画面に表示してみます 0.1
  218. fprintf関数には存在しないfwrite関数の第3引数について考察してみます fwrite(&hairetu[0],sizeof(int),1,fp);の1の部分ですね。
  219. fseek関数を用いてバイナリファイルからデータの読み込み開始位置を指定してデータを読みこんでみましょう 読み取り基準位置がSEEK_SETの場合 
  220. fseek関数を用いてデータの読み込み開始位置を指定してバイナリファイルからからデータを読みこんでみましょう 読み取り基準位置がSEEK_ENDの場合
  221. fseek関数を用いてバイナリファイルからデータの読み込み開始位置を指定してからデータを読みこんでみましょう 読み取り基準位置がSEEK_CURの場合
  222. コンピュータのメモリに効率よくデータを保存、そして使用する為に配列や構造体は作られています😊ゲームでは大量のデータを扱うので大変重宝されます
  223. 構造体を導入します。構造体structure Cubeを定義しcube1の構造体変数宣言structure Cube cube1をおこないます
  224. 構造体と構造体変数の名前の付け方を一緒に考察してみましょう
  225. 構造体変数のメンバ変数を簡単な方法で初期化してみます
  226. int方やfloat型と同じく構造体struct Cubeの型に構造体変数は格納されます つまり構造体struct Cubeとは変数を格納する型といえます
  227. 構造体と構造体変数を用いるとどのような点が便利なのでしょうか?
  228. 構造体struct Cube型の構造体変数cube1に同じ構造体struct Cube型の構造体変数cube2を代入してみましょう
  229. typedefを使い 変数の型名、構造体名などを新しい名前に変更することができます
  230. 構造体宣言と構造体名の変更を同時に行ってみます
  231. 新たに別の種類のデータを管理するために構造体に新たに変数を追加してみます
  232. 構造体の構造体宣言に変数の他に構造体変数を加えてみます
  233. 構造体に格納された他の構造体の構造体変数をもっと簡単に初期化する
  234. 自作関数の引数に構造体変数を用いることができます そしてmain関数内で定義された構造体変数を代入することもできます(この場合 値渡しとなります)
  235. main関数内で定義された構造体変数を自作関数内で定義された構造体変数に代入する・・・構造体変数の値渡し  マックス達はバカンスしています
  236. 構造体変数のアドレスを参照渡しすることによりゲームキャラの位置、ステータスデータを変更することができます ここでその仕組みを学んでいきましょう
  237. 構造体変数のメンバ変数に格納されている数値をポインタ変数をつかってprintf出力表示してみます
  238. main関数内で定義された構造体変数のメンバ変数に格納されている数値データを構造体型のポインタ変数をもちいて自作関数の引数に参照渡しをしてみます
  239. 格納した数値データを効率よくprintf表示する 構造体型の配列宣言を行い複数の構造体変数のメンバ変数に格納された数値を構造体型の配列に格納してみよう その1
  240. 格納した数値データを効率よくprintf表示する 構造体型の配列宣言を行い複数の構造体変数のメンバ変数に格納された数値を構造体型の配列に格納してみよう その2 
  241. 格納した数値データを効率よくprintf表示する 構造体型の配列宣言を行い複数の構造体変数のメンバ変数に格納された数値を構造体型の配列に格納する方法 その3
  242. 構造体の配列を導入します 複数のキャラクターのステータスデータを構造体の配列をもちいてメモリに格納、管理することができます。
  243. 構造体型の配列の簡単な初期化法と格納した数値データを効率よくprintf出力表示する方法について考察してみます   
  244. ここで出そろったメモリにデータを格納するためのいれもの、変数、配列、構造体、構造体型の配列の違いを実際に数値データを格納、表示してみてみましょう。 数値1を格納し数値1を出力する場合 
  245. 数値1から10を格納し、数値1から10をprintf出力する場合 0.2
  246. 縦1.0 横2.0 高さ3.0 の立方体cube1の数値データをメモリに格納、それらの数値データを”文章”にくみこんでコマンドプロンプト画面にprintf出力表示してみます 0.2
  247. 構造体の配列のアドレスを参照渡しすることにより複数のゲームキャラの位置、ステータスデータを構造体だけを使った場合より簡単に変更することができます ここでその仕組みを学んでいきましょう
  248. 複数の立方体の数値データをメモリに格納、それらの数値データを”文章”にくみこんでコマンドプロンプト画面にprintf出力表示してみましょう 0.2
  249. 1人のゲームキャラクターのステータスデータをmain関数内で定義された構造体変数に格納し自作関数に構造体変数のアドレスを参照渡ししてから自作関数によって構造体変数に格納されているデータを変更してみます
  250. 複数のゲームキャラクターのステータスデータをmain関数内で定義された構造体変数に格納し自作関数に構造体変数のアドレスを参照渡ししてから自作関数によって構造体変数に格納されているデータを変更してみます
  251. ちょっとおまけ 自作関数のポインタ変数に複数の構造体変数のアドレスが代入される様子を観察してみましょう
  252. main関数内で定義された構造体の配列のアドレスを自作関数の引数となっているポインタ変数に参照渡ししてmain関数内で定義された構造体の配列に格納されている数値データを変更してみたいと思います。
  253. main関数内で定義された構造体の配列のアドレスを 自作関数の引数となっているポインタ変数に参照渡しして main関数内で定義された構造体の配列に格納されている数値データを変更してみましょう
  254. 構造体の配列のアドレスを自作関数の引数であるポインタ変数に参照渡しして同時に2人のキャラクターのステータスデータを2倍にしてみます。
  255. 構造体の配列をつかって複数のキャラクターのステータスデータを2倍に変更して表示するときの利点はfor文を使って命令文をまとめあげることができるという点にあります
  256. 共用体は構造体のそっくりさんです
  257. 共用体と構造体は何がちがうのかな?😊
  258. 共用体の仕組みをしらべてみましょう。
  259. 列挙体をつかって文字を数値のようにあつかってみましょう。
  260. 実は😝列挙体の文字定数には数値が割り振られています
  261. プリプロセッサの1つ マクロ をご紹介いたします
  262. マクロ2
  263. マクロス
  264. マクロをつかえば自作関数の引数にアドレスを渡す参照渡しの方法を使わなくてもとても簡単にmain関数内で定義された変数を直接、自作関数にかけて格納されている数値を変更することができます
  265. マクロで自作関数を作製する
  266. マクロによって作られた自作関数の特徴を考察してみましょう。
  267. マクロで定義された自作関数をつかってmain関数内で定義された変数、配列、構造体、構造体の配列に格納されている数値を変更してみましょう 参照渡しの方法に比べてプログラムがとても簡単になります
  268. マクロをつかえば自作関数の引数にアドレスを渡す参照渡しの方法を使わなくても簡単にmain関数で定義された変数を自作関数にかけて格納されている数値を変更することができます
  269. マクロで定義された自作関数を使って お手軽にmain関数内で定義された配列に格納されている数値を変更してみます。
  270. マクロで定義された自作関数を使って お手軽にmain関数内で定義された構造体の構造体変数のメンバ変数に格納されている数値を変更してみます。
  271. マクロで定義された自作関数を使って お手軽にmain関数内で定義された構造体の配列に格納されている数値を変更してみます。
  272. マクロをプログラム内で便利に使ってみます
  273. マクロを利用したデバッグ方法 条件付きコンパイル
  274. 条件付きコンパイル その2 #undefと#ifndef
  275. 🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞C言語の基礎事項の解説は以上となります。いかがでしたか? 😊ニコニコ       🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞
  276. 今日のお話は・・・
  277. ちょっとウォーミングアップ たくさんの引数を持つ関数を考察してみる
  278. まずは自作関数f(a,b)型の引数表現に慣れましょう 
  279. 自作関数には引数にif文やfor文などの条件式で使用される変数をもつものがあります。 その1 if文の条件式内の変数を引数に持つ場合 0.1
  280. 自作関数には引数にif文やfor文などの条件式で使用される変数をもつものがあります。 その2 for文の条件式内の変数を引数に持つ場合
  281. 変数がくみこまれた文章を表示する引数を持つ自作関数Sentenseを作製する 
  282. ”文章”を表示する引数を持たない自作関数Sentenseを作製する
  283. if文の条件式に代入する数値によって表示される文章を変更することができる自作関数SelectSentenseを導入する
  284. 自作関数SelectSentenseをつかいメッセージ文を他の自作関数にさりげなく追加しましょう。
  285. 自作関数のなかに自作関数を格納する 自作関数の2重入れ子  その1
  286. 自作関数のなかに自作関数を格納する 自作関数の2重入れ子  その2
  287. プログラム内の自作関数の使われ方が難しいと思ったら、自作関数をmain関数内に戻して考えてみましょう。
  288. 実際に 自作関数が使われたプログラムを 簡単なプログラムに戻して理解してみましょう
  289. ようこそ ここへ 幸せの青い金色の海 天国にいってる 🌞るんるん🌞 C言語入門の世界へ 東方風シューティングを実際に作製していきます(図 イラスト付きです)へとお話は続いていきます 
  290. それでは お話は次のシリーズへと続いていきます
  291. ハードディスク内にファイル作成編(こちらは統合開発環境Visual studioをお使いの方用です。他の統合開発環境をお使いの方用は前の章にあります))
  292. Visual Studio版ファイルポインタ変数宣言とfopen関数の書式設定をおこないハードディスク内にデータを保存するためのファイルを作製します
  293. Visual Studioでは ハードディスク内にファイルを作製するのにfopen関数だけでなくfopen_s関数を使用することができます

フォロー機能を活用しよう

カクヨムに登録して、お気に入り作者の活動を追いかけよう!