2005-10-01から1ヶ月間の記事一覧

プログラミング言語 C

C の 初心者は ときどき 2次元配列と、例として でてきた name のような ポインタ配列との 違いについて 混乱することがある。 下のような 定義が 与えられたとする: int a[10][20]; /* 2-dimensional array */ int *b[10]; /* pointer array */ このとき、a…

プログラミング言語 C

多次元配列は ポインタ配列とは 違うものなので、後まわしにして、 n番目の 月の名前からなる 文字列の ポインタを 返す month_name(n) を 書く 問題を 考えてみよう。 これは (関数内のみで 働く) internal な static 配列には もってこいの 応用例である。…

プログラミング言語 C

少しだけ 関数 read_lines の コードを チェック。 char *p, line[MAX_LEN];while )((len = get_line(line, MAX_LEN))( > 0) if (n_lines >= maxlines || (p = malloc(len)) == NULL) return -1; else { line[len - 1] = '\0'; strcpy(p, line); line_ptr[n_…

プログラミング言語 C

ポインタ それ自体は 変数であるから、他の変数と まったく同様に 配列に 格納することができる。 このことを、一連のテキスト行を アルファベット順に 分類する プログラム、すなわち UNIX の プログラム sort の (余分な機能を 取り去った) 裸の version …

プログラミング言語 C

先に 進む前に、3月27日の 日記を 訂正。(p117-118) /* getint.c */ #include #include /* isspace, isdigit に必要 */#define MAX 100int get_int(int *); int get_ch(void); void unget_ch(int);main() { int n, m = 0; int num[MAX]; for (n = 0; n ; whi…

プログラミング言語 C

(ある関数での 戻り値 = 返り値が ポインタの 場合には) C では、データを正しく指す ポインタは 0 には ならないことを 保証しているから、0 という 戻り値は 異常事態の 発生を 知らせるのに 使うことができる。 一般に ポインタは、他の変数と 同様に 初…

プログラミング言語 C

基本に もどって、ちょっと 復習 ... C においては、ポインタと 配列との間に 強い 関係がある。 この関係が 強いので、ポインタと 配列とは 同時に 論じなければならない。 a[i] という 記法は、(ブロックの) 先頭から i番目の 位置の 配列要素を 参照する…

useless tips

google で 日本語を 英訳する page が あったので、早速 試してみた。 =http:// の後へ URL アドレスを 指定するだけで OK。 人の web page で 試すわけにもいかないので、自分の page で やってみる。 http://translate.google.com/translate?hl=en&sl=ja&u…

debian memo

[debian apt] debian woody の gcc コンパイラを version 2.95/3.0 から 3.3 へ 変更。# apt-get remove gcc-2.95 gcc-3.0と すると、かってに gcc-3.3 が インストールされる。 これって 変則ワザ ?

useless tip

[skiplist] skiplist を 使って 実装しようとしたけど、できなかった ... (;_;) net 上には - 少ないながらも - 工夫した skiplist の コードは あったのだが、いちばん 知りたい その使い方*1は なかった。 C の 初心者は こんなとこで つまずくのですネ。 …

はじめての C

AVL木の削除。 関数 avl_remove では 再帰が 使われてるが、引数に successor を とってる 箇所が ある。 あまり 安易には いじれないみたいだ。 なので、削除するデータを含む ノードを 返り値とする 検索関数を はさんでみた。 元にした search 関数は コ…

debian memo

ミラーサーバからの update が 不調*1なので、設定の練習も 兼ねて apt-setup を 実行した。 $ cd /etc/apt $ su password: # cp -f sources.list sources.list.bak # :> sources.list # apt-setup noprobeapt-setup の 設定画面に。 サーバは 今回は ftp.jp…

はじめての C

今度は AVL木。関数 avl_insert では 仮引数が それぞれ 構造体のポインタと 構造体になっているので、メモリの確保が 別に必要となります。でも、そんなこと できそうにもないので、avl_insert を少し改悪 ? してみることに ... /* insert_avl.c */ #includ…