Latest Entries
エクスプローラー
このカテゴリーでは,vimについての覚書などを書いていこうかなと思います.
最近よく使っているのがvimのファイラとしての機能.:Se というコマンドで,カレントディレクトリをエクスプローラを開くことができます(この機能のヘルプは :h file-explorer などで見ることができます).
デフォルトだと水平に分割されて使いづらいので,垂直に分割するように設定したほうがいいでしょう.私は次のように_gvimrcに書き込んでいます.
:let g:explVertical=1
:let g:explSplitRight=1
これで垂直分割できるようになりました.
この機能を使えば,ファイラーを使う機会が減って,編集作業がより効率的に行えるかもしれません.
ポインタと配列名
新たな疑問
前回,配列名だけで「配列の先頭へのポインタ」を表すといいましたが,その逆はどうでしょうか.つまり,「配列の先頭へのポインタがあれば,それは配列そのものを指すか」ということです.
答えはもちろんノーです.そのことを確認するプログラムは以下の通りです.
ポインター
C言語を学習するときの最初の壁がポインタと言われます.ですが,実際はそれほど難しいわけではありませんよ.
変数には有効範囲(スコープ)というものがあり,C言語の場合,基本的に生成した関数の中でしか変数が有効ではありません.その有効範囲の壁を越えて,他の関数で処理させるためにポインタというものが使われます.
そこで今回は,なんとなくそのことを確認できるプログラムを作ってみました.
普通の変数のほうはまぁ当たり前な結果がでますが,ひとつ意識しておいたほうがいいのが,配列の先頭へのポインタ です.
確かに &a[0] でも間違いではありませんが,普通こんなこと書きませんよね?a (配列名) だけで,配列の先頭を指すことができます.
普通に使っているだけに,言われて,「・・・ああ!」ということもありますからねぇ.
文字列をソートする
strcmp と qsort を用いれば,文字列をソートするプログラムができます.
qsortって便利ですよね.比較関数さえ用意すれば,それほど迷うことなく作れます.
こういうプログラムを作れば分かりますが,一つ前に作ったプログラムのint_cmp と, 標準ライブラリのstrcmp って,似ていますよね.
qsort 関数
アルゴリズムの講義でいろいろなソートを習いましたが,標準ライブラリにも qsort という関数があります(2分探索のときに,実際に使いましたね).
確認する意味で,簡単な qsort を使ったプログラムを作ってみました.
どうすれば降順にならぶかとか,double型を扱う場合はどうすればいいかとか,いろいろ試してみてはどうでしょうか.
bsearch もほぼ同様のシグネチャをしていますので,合わせて覚えておくといいかもしれません.
余談ですが,どちらも 関数へのポインタ というものを使います.この「関数へのポインタ」というのが中々便利ですよ.

