一年生のプログラミングの復習をしてるけど,いくつか気付いたこととか思ったことがあったのでメモ.
.bashrc
普段はあまりいじらないところ.
でも演習問題が112問くらいあるものだから同じコマンドを打つのに疲れた.
よく使うのは
gcc -o answer answer.c ./answer rm answer
と
mkdir 001 cd 001
みたいなやつ(ちなみに,今の環境はCygwinです).
これaliasでまとめられるかなーと思ったんだけど,引数に使うからfunctionにしないとだめっぽい.
というわけで,こんな感じになる.
function gccexe(){ gcc -o $1 $1.c&&(./$1;rm $1) } function mkcd(){ mkdir $1&&cd $1 }
C
久々にC言語を触ったものだから,色々なことを忘れてた.
ちょっとビックリしたのは,
int max(int array[]){ int i; int max=array[0]; int len=sizeof(array)/sizeof(int); for(i=0;i<len;i++){ max=max<array[i]?array[i]:max; } return max; }
で挙動がおかしくなったこと.
4行目で配列の長さを求めようとしてるけど,arrayってただのポインタだから,lenの中身はたぶん1になる.だからおかしな挙動を起こす.
ちなみにこれの簡単な解決策は,配列を渡すときに長さも一緒に渡すこと.
int max(int array[],int len);
みたいに.
あと,
1,2,3,4,5,6,7,8,9,10
みたいな出力するときforで回すけど,普通にやると
1,2,3,4,5,6,7,8,9,10,
になっちゃう.昔は条件分岐で分けてたんだけど,forを抜けた後に
printf("b ");
とすれば良いってわかった.bは後退でその後のホワイトスペースで塗りつぶす感じ.
今回は以上.