マガジンのカバー画像

C言語

63
C言語に関するあれこれ
運営しているクリエイター

#スタック

C言語教室 第23回 - スタックとキュー(回答提出)

C言語教室 第23回 - スタックとキュー(回答提出)

こちらの課題回答です。

課題コメントさんざん書きまくってきたような気がする(笑)。

少し汎用性を持たせてみたけど、データがint型固定だから、まぁまぁまぁまぁみたいな(笑)。なかなか汎用的になりきらない。もっと頑張れるだろうか。

個々のデータサイズも初期化時に指定して、データはポインタ渡しとか。任意の型に対応できるかもしれないけど、そうすると扱う型はユーザ任せになっちゃう。バグの元か。

p

もっとみる
C言語の for ループにみる副作用

C言語の for ループにみる副作用

先日、プログラミングにおける「副作用」について記載しました。

その際、次のようにも申しました。

『実は、C言語の for ループは副作用があると言われています。』

今回はその『C言語の for ループにみる副作用』について記述しようかと思います。

C言語の for 文の例例えば、n の階乗(n!)を求める関数です。

int fact (int n){ int i; int f

もっとみる
【C言語】コンパイラが何をしているのか、ちょっとのぞいてみよう その3 コンパイル

【C言語】コンパイラが何をしているのか、ちょっとのぞいてみよう その3 コンパイル

C言語のコンパイラというのは、次の4つのステップで成り立ちます。

(1)プリプロセッサ
(2)コンパイル
(3)アセンブル
(4)リンク

前回は「(1)プリプロセッサ」について記載しました。

次は「(2)コンパイル」について書いてみましょう。

コンパイルは、C言語を翻訳してアセンブリコードを出力します。

アセンブリコードはCPUによって異なります。このため、いろいろなCPUに対応したいろ

もっとみる
スタックをC言語で書いてみた このプログラムの問題点を幾つあげられますか?

スタックをC言語で書いてみた このプログラムの問題点を幾つあげられますか?

もう少し、スタックについて寄り道。

スタックについて書いたのが既に二週間前で、「スタックってなんだっけ?」という感じです。
そういうときはこちらへ


C言語でスタックを書いてみました。
#include <stdlib.h>#include "stack.h"int* s_addr = 0;int* s_sp = 0;/* create stack */void create(int si

もっとみる
コンパイラが何をしているのか、ちょっとのぞいてみよう その1

コンパイラが何をしているのか、ちょっとのぞいてみよう その1

古い話で申し訳ないけれど、私がソフトウェア開発の仕事を始めた頃は、C言語レベルでデバッグできる環境はありませんでした。

そのため、いつもアセンブラでデバッグです。
お陰様で(?)、コンパイラが何をしているのかはよくわかりました。

コンパイラがなにをしているのか、気になったことはありませんか?
ちょっと覗いてみましょう。

昨今はとにかくすごい。
スマホでC言語がコンパイルできて、スマホで gd

もっとみる