Tips

一年生のプログラミングの復習をしてるけど,いくつか気付いたこととか思ったことがあったのでメモ.

.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は後退でその後のホワイトスペースで塗りつぶす感じ.
今回は以上.