C言語のお勉強 ポインタ編 第3回
ポインタ変数も変数だ
そうですね
ポインタ変数にもとうぜん識別番号が振られている。識別番号は喩えだが
そういうことになりますね
ポインタ変数の識別番号を格納する変数もまたポインタ変数だ
あれ?そこはポインタへのポインタとか言うんじゃないですか?
違うぞ。ポインタ変数はポインタ変数だ
どういうことですか?
ポインタ変数も変数だ
そうですね
ポインタ変数にもとうぜん識別番号が振られている。識別番号は喩えだが
そういうことになりますね
ポインタ変数の識別番号を格納する変数もまたポインタ変数だ
あれ?そこはポインタへのポインタとか言うんじゃないですか?
違うぞ。ポインタ変数はポインタ変数だ
どういうことですか?
ポインタは関数呼び出しの実引数を書き換えるのに使うと習いました
ああ、うん、そうだね
何ですか?その煮え切らない感じ
どうしてポインタを使わないと実引数を書き換えられないのか説明できるかい?
話を逸らしましたね。ええと、仮引数は実引数のコピーなので仮引数を書き換えても実引数に影響しない…ですよね
そうだ。そのように実引数のコピーが仮引数に代入される仕組みを値渡しと呼ぶ
そこがポインタだと違うわけですね
違わない
へ?
違わないのだよ。引数の型がポインタであっても値渡しだ
どういうことですか?
変数は値を入れる箱だという喩えを聞いたことがあるかい?
ええ、よくある喩えですね
その箱にアクセスするとき変数名を使うね。例えばこんな具合だ
int i; i = 100; printf("%d\n", i);
実はその箱には必ず識別番号が振られている。識別番号は喩えだが
識別番号ですか?何のために?
もちろん箱にアクセスするためだ
変数名を使えばいいじゃないですか
名前の無い変数もあるのさ。名前の付いた変数は寿命が決まっているが名前の無い変数にはそのような縛りがない
何ですか?それ
いまは知らなくていいよ。名前に縛られないメリットは他にもある。要するに便利なのさ
SDL版作った。
SDL_ttfの関数にUTF-8文字列を渡すために、DXライブラリ版と違ってバッファにはUTF-8のまま記録する。SDL_ttf以外もSDLは基本UTF-8だし。
禁則文字の判定にはワイド文字を使う。Visual C++とMinGWは標準ライブラリでUTF-8に対応していないので、Win32 APIを使った関数に差し替える。MinGWは未確認。
『ノベルゲーム風に一文字ずつ表示する』を、UTF-8文字列を読み込むようにしてみた。
いまのところゲームプログラムでShiftJIS以外は考えなくて良い気がするけれど、ふとSDLで作るなら必要だなあと思ってしまったので実験的に作ってみた。
将来必要になるかもしれないし。
そんなわけだが、今回はDXライブラリ版。
Visual C++のC/C++標準ライブラリはUTF-8に対応していないので、Win32 APIを使ってUTF-8のマルチバイト文字をワイド文字に変換。UNICODE版のAPIが使えるので内部ではワイド文字で持つようにした。
指定幅で折り返して文字列を描画するサンプルプログラム。
行頭禁則と行末禁則に対応。
制御文字には対応していないので強制改行とかは無し。
ShiftJIS専用。
DXライブラリと自前のフレームワークを使っている。
JavaSE向けビデオゲームライブラリ(isle_shimakura.jar)を更新した。
以下は変更内容に関してのメモ。
最近のコメント