リスト構造について
データ処理において、配列は基本的データ構造だが、動的メモリ確保の説明で述べたように、基本の配列では大きさを変更することができない。これ以外にも、配列は途中にデータを挿入・削除を行う場合、の処理時間を伴う。以下にその問題点 […]
簡単テストの解説
前に実施した簡単テストの答え。 キーワードの理解 C言語の予約語(キーワード) 型の理解 上記の問題だけでは、説明しきれないので、下図左のプログラムと、その printf() で表示するデータの型を示す。 型の意味を考え […]
簡単テスト
情報構造論のテストにて結果は両極端な成績。苦手な人は基本理解が怪しいみたい。ということでC言語の理解の確認。 答えの解説 キーワードの理解 以下のプログラムの下線部 A-I の各単語を説明するのにふさわしいものを、(a) […]
型の無い言語からC言語を学ぶと
情報構造論の中間試験の採点をしていて気づいたこと。 プログラムが解っていない学生の回答で、関数呼び出しで実引数に int とか実引数の型を書く学生がいる。 int foo( int x ) { return x * x […]
mallocを使った課題
授業での malloc , free を使ったプログラミングを踏まえ、以下のレポートを作成せよ。 以下のデータのどれか1つについて、データを入力し、何らかの処理を行うこと。 課題は、原則として、(自分の出席番号%3)+1 […]
malloc()とfree()
malloc()とfree() malloc() は、動的(ヒープ領域)にメモリを確保する命令で、データを保存したい時に malloc() を実行し、不要になった時に free() を実行する。 malloc() では、 […]
効率のよいメモリ使用と動的メモリ確保
次にメモリの利用効率の話について解説する。 配列宣言でサイズは定数 C言語では、配列宣言を行う時は、配列サイズに変数を使うことはできない。 最近のC(C99)では、実は下記のようなものは、裏で後述のalloca()を使っ […]
ポインタの加算と配列アドレス
ポインタの加算と配列アドレス ポインタに整数値を加えることは、アクセスする場所が、指定された分だけ後ろにずれることを意味する。 // ポインタ加算の例 int a[ 5 ] = { 11 , 22 , 33 , 44 , […]
ソートアルゴリズム
前回の授業のハノイの塔は、単純な再帰方程式で処理時間のオーダーが巨大となる一例として示した。そこで、プログラムの中でよく利用されるデータの並び替え(ソート)で処理時間の分析を行ってみる。 ポインタについての説明は、前回の […]
ポインタを使った処理
この後の授業で、ポインタを使ったプログラムが増えるので、ポインタの理解の確認 ポインタと引数 値渡し // 値渡しのプログラム void foo( int x ) { // x は局所変数(仮引数は呼出時に // 対応す […]