マガジンのカバー画像

C言語

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

2022年10月の記事一覧

C言語 足し算プログラム改善

C言語 足し算プログラム改善

前回プログラムでは、足し算が一回しかできませんでした。

なので、繰り返し足し算できるように改良してみました。

それがこちら。
#include <stdio.h>int main(){ for (;;) { int a; int b; int x;

もっとみる
C言語 「main」関数と分離する

C言語 「main」関数と分離する

序章前回までで足し算プログラムを作りました。

関数は「main」関数が1つだけ。

「main」関数はC言語において特殊です。
プログラムを実行したとき、この「main」関数から実行されます。
プログラムの中で「main」関数は必ず必要であり、複数存在してはいけません。唯一無二の存在です。

C言語で書かれたプログラムは必ず「main」関数を持ちます。
プログラムAからプログラムBへコードを移植

もっとみる
C言語って何? 標準関数を使ってみる

C言語って何? 標準関数を使ってみる

それでは、その「標準関数」です。

<assert.h>

assert

<complex.h>

cacos

cacosf

cacosl

casin

casinf

casinl

catan

catanf

catanl

ccos

ccosf

ccosl

csin

csinf

csinl

ctan

ctanf

ctanl

cacosh

cacoshf

cac

もっとみる
C言語って何? 【C言語の予約語】

C言語って何? 【C言語の予約語】

C言語はプログラミング言語の一つです。
C言語を書くことによりCPUを自在に制御できます。

そのC言語を書くにあたって、予約語というものがあります。
プログラマーがシンボルに使うことができない単語のことですが、逆に言うと、C言語はこの予約語で構成されていることになります。

その予約語を一挙に掲載してみましょう。

auto

break

case

char

const

continue

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

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

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

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

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

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

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

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

もっとみる
[コラム]プリプロセッサのいろいろ

[コラム]プリプロセッサのいろいろ

[コラム]プリプロセッサのいろいろ 1

ものすごく複雑なマクロに出会った。
コンパイラのバグで展開できなかった。

[コラム]プリプロセッサのいろいろ 2

C言語のヘッダファイルというのはとても便利そうに見えるのだが、本当は実に面倒な代物である。
分離して書くことをプログラマに強いている。
だから、JavaもC#もこれを排除した。

[コラム]プリプロセッサのいろいろ 3

「#define」

もっとみる
【C言語】コンパイラが何をしているのか、ちょっとのぞいてみよう その2 プリプロセッサ

【C言語】コンパイラが何をしているのか、ちょっとのぞいてみよう その2 プリプロセッサ

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

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

まとめて説明しようと思いましたが、長くなったので個別に。

まずは、プリプロセッサから。

(1)プリプロセッサ

プリプロセッサというのは、「#」で始まるプリプロセッサ命令を処理します。

「#include」で指定されたファイルを読み込み、
「#defi

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

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

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

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


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

もっとみる