ChishiroのC言語

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

Windows,MacOS,Linux/UNIX,FreeBSD等のOS開発に利用されるプログラミング言語「C言語」に関する記事を紹介します.

C言語を習得してコンピュータの本質を理解したいあなたにおすすめです.

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

事前に必要な基礎知識

本ブログの記事は主にC言語の中級者~上級者向けに書かれています.

具体的には,以下の方を対象としています.

  • C言語を利用して研究開発している情報系の学部4年生~大学院生(修士・博士)
  • ロボット,自動車,IoTを対象としたC言語エンジニア(組込み・IoTエンジニア)
  • OSの中身を学びたい方
  • コンピュータの本質を理解したい方

事前に必要な基礎知識として,以下のコンピュータの基本を習得しているとします.

  • ハードウェア
  • OS
  • C言語(初心者)

これらのコンピュータの基本が身についていない場合は,まずは以下の本を理解した上で学ぶことをおすすめします.どれも名著です.

もちろん,これらの本を読みながらC言語を学んでもOKです.

ハードウェア

ハードウェアのおすすめの本は「コンピュータの構成と設計 第5版」です.

コンピュータの構成と設計 第5版は,コンピュータアーキテクチャ(ハードウェア)の基礎を学ぶための良書です.

本の著者はデイビッド・パターソンとジョン・ヘネシーで,苗字の最初の2文字をそれぞれ取って「パタヘネ」と呼ばれています.

パタヘネはコンピュータアーキテクチャを学ぶための必読書です.



コンピュータの構成と設計 第5版を理解して余裕があるあなたは,「コンピュータアーキテクチャ[第6版]定量的アプローチ」をおすすめします.

コンピュータアーキテクチャ[第6版]定量的アプローチの著者は,順番は違いますが,同じくジョン・ヘネシーとデイビッド・パターソンで,苗字の最初の2文字をそれぞれ取って「ヘネパタ」と呼ばれています.

ヘネパタはパタヘネよりは高度な内容ですが,挑戦したいあなたにおすすめです.


OS

「オペレーティングシステム 第3版」は,OSの本質が学べる本です.

オペレーティングシステム 第3版の著者は,アンドリュー・タネンバウムです.

アンドリュー・タネンバウムは,MINIXという教育用のOSを開発したことで有名です.

オペレーティングシステム 第3版で,OSの本質を学べます.


「30日でできる! OS自作入門」は,C言語を学んでOSを自作する楽しさを知りたいあなたにおすすめです.


C言語(初心者)

最初に紹介する書籍は,C言語を開発したブライアン・カーニハンとデニス・リッチー(K&R)が書いた「プログラミング言語C 第2版」です.

プログラミング言語C 第2版は1988年発売と結構古いですが,一度読んでおくことをおすすめします.


C言語の初心者向けの内容を独学したいあなたに,以下の無料サイトをおすすめします.

どちらも人気サイトなので,書籍化されています.



ちょっとC言語の独学は難しいな,と思うあなたは,C言語を学べるおすすめのオンラインプログラミングスクール5社を読みましょう.

C言語 プログラミングスクール
C言語を学べるおすすめのオンラインプログラミングスクール5社

こういった悩みにお答えします. 本記事の内容:C言語を学べるおすすめのオンラインプログラミングスクール5社 SAMURAI ENGINEER(侍エンジニア) CODEGYM Monthly(コードジム ...

続きを見る

C言語の開発環境

本ブログにおけるC言語の開発環境は,特に断りがない限り以下になります.

  • Intel 64ビットCPU(マルチコア)
  • Linux 5.3.0(Ubuntu 20.04 LTS)
  • GCC 10.3.0

また,GCC 10.3.0の比較用のコンパイラとしてClang 10.0.0,他の開発環境としてWindows 10上でVisual Studio 2019を利用することがあります.

Ubuntuを使っているあなたは,apt-getコマンドで以下のソフトウェアをインストールしましょう.

基本的にはC言語で開発できれば良いですが,コードの比較用に一部C++/Python言語で開発する場合があります.

C言語のコードのライセンス

本ブログでオープンソースとして公開する私が作成したC言語のコードのライセンスは,2条項 BSDライセンスになります.

また,引用するコードは,そのライセンスに従います.

例えば,Linuxカーネルのコードのライセンスは,GPL Version 2になります.

私が書いたコードで,あなたのコーディング時間を減らすことができます.

つまり,あなたの研究開発や仕事の効率を上げることができますので,是非利用して下さい!

C言語の概要

C言語とは
C言語とは【元東大教員から学べます】

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語2 C言語ができること3 C言語の人気4 Hello World5 まとめ C言語 C言語は,1972年にアメリカのAT&am ...

続きを見る

C言語 学ぶメリット
元東大教員が語るC言語を学ぶ3つのメリット

こういった悩みにお答えします. 本記事の内容:C言語を学ぶ3つのメリット 代表的なOSがわかる OS系のインターンや就職がアプリケーション系より簡単に内定ゲットできる コンピュータの本質がわかる こう ...

続きを見る

C言語 C++言語 C#言語
元東大教員が語るC言語,C++言語とC#言語の違い

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語,C++言語とC#言語の違い2 C言語3 C++言語4 C#言語5 まとめ C言語,C++言語とC#言語の違い C言語,C++ ...

続きを見る

C言語のWebサイト

C言語 プログラミング サイト
【無料】C言語のプログラムを実行できるおすすめWebサイト3選

こういった悩みにお答えします. こういった私が解説していきます. C言語を学ぶために開発環境を構築するのは面倒ですよね. そんなあなたにC言語のプログラムを実行できるおすすめWebサイト3選を紹介しま ...

続きを見る

C言語 学べるサイト
【無料】C言語を学べるおすすめWebサイト3選

こういった悩みにお答えします. 本記事の内容 ハッカーランク(HackerRank) リートコード(LeetCode) Project Based Learning こういった私が解説していきます. ...

続きを見る

C言語の基礎(深掘り)

データ型,typedef,オーバーフロー,非数と無限大

C言語 データ型
【C言語】データ型とは【変数定義,変数名のルールと命名規則,定数,配列,文字配列,型修飾子】

こういった悩みにお答えします. こういった私から学べます. 目次1 データ型1.1 char型(文字型)1.2 int型(整数型)1.3 float/double型(浮動小数点型)2 変数定義3 変数 ...

続きを見る

C言語 typedef
【C言語】typedefとは

こういった悩みにお答えします. こういった私から学べます. 目次1 typedef2 typedefで定義されている標準ライブラリのデータ型2.1 stdio.h2.2 stddef.h2.3 std ...

続きを見る

C言語 算術オーバーフロー
【C言語】算術オーバーフローと回避方法

こういった悩みにお答えします. こういった私から学べます. 目次1 算術オーバーフロー2 整数オーバーフロー3 C言語で符号ありデータ型を使う理由4 符号エラー5 切り捨てエラー6 不完全な範囲チェッ ...

続きを見る

C言語 非数と無限大
【C言語】非数(nan:Not a Number)と無限大(inf:∞)とは

こういった悩みにお答えします. こういった私から学べます. 目次1 非数(nan:Not a Number)と無限大(inf:∞)2 C言語で非数(nan:Not a Number)になるコード3 C ...

続きを見る

演算子

C言語 演算子
【C言語】演算子とは

こういった悩みにお答えします. こういった私から学べます. 目次1 演算子2 算術演算子3 等値演算子と関係演算子4 論理演算子5 インクリメント演算子とデクリメント演算子6 ビット演算子とシフト演算 ...

続きを見る

C言語 剰余
【C言語】剰余演算子(%)の符号の注意点

こういった悩みにお答えします. こういった私から学べます. 目次1 剰余演算子(%)2 剰余演算子(%)の符号の注意点:is_odd関数で解説3 剰余演算子の間違った使い方4 剰余演算子の正しい使い方 ...

続きを見る

C言語 ビット演算子 シフト演算子
【C言語】ビット演算子とシフト演算子の使い方

こういった悩みにお答えします. こういった私から学べます. 目次1 ビット演算子2 &:ビット毎のAND(論理積)3 |:ビット毎のOR(論理和)4 ^:ビット毎のXOR(排他的論理和)5 ~ ...

続きを見る

C言語 ビット/シフト 応用
【C言語】ビット演算とシフト演算の応用:回転,セット/クリア,スキャン,カウント【x86/ARM命令のコード】

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語でビット演算とシフト演算の応用2 ビットの回転3 ビットのセット/クリア4 ビットのスキャン4.1 ビットをスキャンする関数4 ...

続きを見る

C言語 キャスト
【C言語】キャスト演算子による明示的な型変換【暗黙的な型変換も紹介】

こういった悩みにお答えします. こういった私から学べます. 目次1 キャスト演算子【明示的な型変換】1.1 キャスト演算子でオーバーフローの回避1.2 キャスト演算子で汎用ポインタ型(void *)か ...

続きを見る

C言語 sizeof演算子
【C言語】sizeof演算子の使い方

こういった悩みにお答えします. こういった私から学べます. 目次1 sizeof演算子2 sizeof演算子でデータ型のサイズの計算3 sizeof演算子で変数のサイズの計算4 sizeof演算子でポ ...

続きを見る

C言語 &
【C言語】&を利用する3つの演算子【アドレス,論理積,ビット毎の論理積】

こういった悩みにお答えします. こういった私から学べます. 目次1 &a,*b:アドレス演算子(&)と間接演算子(*)2 a && b:論理積演算子(&&amp ...

続きを見る

C言語 演算子の優先順位 結合規則
【C言語】演算子の優先順位と結合規則

こういった悩みにお答えします. こういった私から学べます. 目次1 演算子の優先順位と結合規則2 演算子に関する記事3 まとめ 演算子の優先順位と結合規則 数学の式に優先順位があるのと同様に,C言語の ...

続きを見る

制御文

C言語 制御文
【C言語】制御文とは【if/else/while/do-while/for/switch/break/continue】

こういった悩みにお答えします. こういった私から学べます. 目次1 制御文2 if文2.1 if文の書式2.2 if文を利用するコード3 複文3.1 複数の書式3.2 if文で複数の文の制御4 if- ...

続きを見る

C言語 ピラミッド
【C言語】for文で6種類の数字のピラミッドの表示

こういった悩みにお答えします. こういった私から学べます. C言語を学んでいると,よくfor文でピラミッドを表示する問題が出ますよね. うまくコードが書けなくて悩んでいるあなたにピラミッドを表示するコ ...

続きを見る

C言語 カレンダー
【C言語】for文でうるう年を考慮したカレンダーの表示

こういった悩みにお答えします. こういった私から学べます. 目次1 うるう年2 for文でうるう年を考慮したカレンダー3 まとめ うるう年 うるう年とは,2月が28日ではなく29日と1日増える年のこと ...

続きを見る

C言語 goto文
【C言語】goto文が有用な3つの例外

こういった悩みにお答えします. こういった私から学べます. 目次1 goto文2 C言語でgoto文が有用な3つの例外2.1 資源の獲得・解放を1:1対応にする場合2.2 多重構文から脱出する場合2. ...

続きを見る

関数,ポインタ

C言語 関数
【C言語】関数とは【プロトタイプ宣言,引数,記憶クラス指定子とスコープ,関数内外の変数の初期化】

こういった悩みにお答えします. こういった私から学べます. 目次1 関数2 関数のコード例3 関数のプロトタイプ宣言4 関数の引数5 記憶クラス指定子とスコープ5.1 変数定義5.2 変数の分類5.3 ...

続きを見る

C言語 再帰
【C言語】関数の再帰呼び出しで階乗,順列,組み合わせの計算

こういった悩みにお答えします. こういった私から学べます. 目次1 関数の再帰呼び出し2 関数の再帰呼び出しで階乗の計算3 関数の再帰呼び出しで順列を計算4 関数の再帰呼び出しで組み合わせを計算5 ま ...

続きを見る

C言語 ポインタ
【C言語】ポインタとは

こういった悩みにお答えします. こういった私から学べます. 目次1 ポインタ2 ポインタ変数2.1 ポインタ演算子の使い方2.2 ポインタ変数を利用するコード3 ポインタと関数の引数:値渡しと参照渡し ...

続きを見る

構造体,共用体,列挙型

C言語 構造体
【C言語】構造体とは【定義,変数,アクセス,引数,戻り値,ポインタ,ビットフィールド】

こういった悩みにお答えします. こういった私から学べます. 目次1 構造体2 構造体の定義3 構造体の変数4 構造体のアクセス4.1 構造体メンバへのアクセス 4.2 構造体変数の初期化4.3 構造体 ...

続きを見る

C言語 共用体
【C言語】共用体unionの使い方と実例

こういった悩みにお答えします. こういった私から学べます. 目次1 共用体union2 共用体unionの使い方3 共用体unionのLinuxカーネルにおける実例4 まとめ 共用体union 共用体 ...

続きを見る

C言語 列挙型
【C言語】列挙型enumの使い方と実例

こういった悩みにお答えします. こういった私から学べます. 目次1 列挙型enum2 列挙型enumの使い方3 列挙型enumのポインタ型の使い方4 列挙型enumのLinuxカーネルにおける実例5 ...

続きを見る

プリプロセッサ(マクロ)

C言語 マクロ
【C言語】プリプロセッサ(マクロ)とは

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語のプリプロセッサ(マクロ)とは2 #include:ファイルの取り込み3 #define:マクロ置換3.1 記号定数マクロ3. ...

続きを見る

可変長引数

C言語 可変長引数
【C言語】可変長引数"..."とは

こういった悩みにお答えします. こういった私から学べます. 目次1 可変長引数2 可変長引数の関数2.1 "..."とは:printf/scanf関数のプロトタイプ宣言で解説2.2 可変長引数のプロト ...

続きを見る

C言語 printf関数 自作
【C言語】printf関数の自作「myprintf関数」

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語でprintf関数の自作「myprintf関数」2 printf関数の自作「myprintf関数」の作成ルール3 myprin ...

続きを見る

C言語 scanf関数 自作
【C言語】scanf関数の自作「myscanf関数」

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語でscanf関数の自作「myscanf関数」2 scanf関数の自作「myscanf関数」の作成ルール3 myscanf関数の ...

続きを見る

予約語(キーワード)

C言語 予約語
【C言語】予約語(キーワード)【C99/C11の追加分もあります】

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語の予約語(キーワード)2 型に関する予約語(キーワード)2.1 整数型2.2 符号の有無2.3 浮動小数点型2.4 複素数型2 ...

続きを見る

開発ツール

C言語 Make
【C言語】Makeの使い方

こういった悩みにお答えします. こういった私が解説していきます. C言語はPython,Ruby,HTML/CSS/JS/PHPのようなアプリケーション系の言語と比較して難易度が高いですよね. 私がC ...

続きを見る

C言語 GDB
【C言語】GDBでプログラムを効率的にデバッグ

こういった悩みにお答えします. こういった私が解説していきます. 目次1 GNU Debugger(GDB)2 GDBの簡単な利用例2.1 GDBなしで実行2.2 GDBありで実行3 GDBによるステ ...

続きを見る

C言語 コンパイラ最適化
【C言語】コンパイラの最適化と戦うあなたへ

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語のコンパイラの最適化による不具合2 C言語からアセンブリ言語への変換箇所を特定する方法3 ループ処理のコード例4 コンパイラの ...

続きを見る

C言語 C4996エラー
【C/C++言語】Visual StudioでC4996エラーを回避する4つの方法

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語のC4996エラー2 Visual StudioでC4996エラーを回避する4つの方法2.1 C4996エラーをプロパティのS ...

続きを見る

C言語の標準ライブラリ

stdio.h

C言語 標準入力stdin
【C言語】標準入力stdinから値を読み込む方法

こういった悩みにお答えします. こういった私から学べます. 目次1 標準入力stdin2 標準入力から文字の読み込み2.1 getchar関数2.2 getc関数2.3 fgetc関数3 標準入力から ...

続きを見る

C言語 gets関数
【C言語】gets関数が廃止された理由と代替関数

こういった悩みにお答えします. こういった私から学べます. 目次1 gets関数が廃止された理由2 gets関数の代替関数2.1 fgets関数2.2 getline関数2.3 gets_s関数2.4 ...

続きを見る

C言語 標準出力 標準エラー出力
【C言語】標準出力と標準エラー出力の違い

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語の標準出力と標準エラー出力の違い1.1 3つの標準ファイルストリーム1.2 標準出力と標準エラー出力のコード2 ファイルストリ ...

続きを見る

C言語 sprintf関数
【C言語】sprintf/snprintf/sprintf_s関数の使い方

こういった悩みにお答えします. こういった私から学べます. 目次1 sprintf関数2 snprintf関数3 sprintf_s関数4 まとめ sprintf関数 [crayon-616a0cba ...

続きを見る

C言語 fopen関数
【C言語】fopen/open/fopen_s関数の使い方

こういった悩みにお答えします. こういった私から学べます. 目次1 fopen関数1.1 fopen関数でファイルの読み込み1.2 fopen関数でファイルの書き込み2 open関数2.1 open関 ...

続きを見る

C言語 CSVファイル
【C言語】CSVファイルの読み書き【C++/Python言語でも紹介】

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語でCSVファイルの読み書き2 参考:C++/Python言語でCSVファイルの読み書き2.1 C++言語でCSVファイルの読み ...

続きを見る

stdlib.h

C言語 絶対値
【C言語】絶対値を標準ライブラリ関数と自作関数・マクロで計算

こういった悩みにお答えします. こういった私から学べます. 目次1 絶対値2 絶対値をC言語の標準ライブラリ関数で計算2.1 整数と浮動小数点数の絶対値を計算2.2 複素数の絶対値を計算3 絶対値をC ...

続きを見る

C言語 atoi/atof関数
【C言語】atoi/atof関数と自作関数で文字列を数値に変換

こういった悩みにお答えします. こういった私から学べます. C言語で文字列を数値に変換する方法と数値を文字列に変換する方法を紹介します. 本記事を読むと文字列と数値の相互変換をきちんと理解できます. ...

続きを見る

C言語 乱数生成
【C言語】rand関数と自作関数で乱数の生成【モンテカルロ法で円周率の計算】

こういった悩みにお答えします. こういった私から学べます. 目次1 乱数2 一様乱数と一様分布3 rand関数による乱数の生成3.1 rand関数による乱数の生成コード3.2 rand/srand関数 ...

続きを見る

C言語 動的メモリ確保
【C言語】malloc/calloc/realloc/alloca関数と可変長配列で動的にメモリ確保

こういった悩みにお答えします. こういった私から学べます. C言語のmalloc/calloc/realloc/alloca関数と可変長配列で動的にメモリ確保する方法を紹介します. 目次1 mallo ...

続きを見る

string.h

C言語 文字列の比較
【C言語】strcmp/strncmp関数と自作関数で文字列の比較

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語で文字列の比較2 strcmp/strncmp関数2.1 strcmp/strncmp関数の利用例2.2 strcmp/str ...

続きを見る

C言語 strlen関数
【C言語】strlen関数と自作関数で文字列の長さの計算

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語で文字列の長さの計算2 strlen関数2.1 strlen関数の利用例2.2 strlen関数とsizeof演算子の違い2. ...

続きを見る

C言語 strdup関数
【C言語】strdup/strndup関数で文字列の複製と自作

こういった悩みにお答えします. こういった私から学べます. 目次1 strdup/strndup関数で文字列の複製1.1 strdup/strndup関数の利用例1.2 strdup/strndup関 ...

続きを見る

C言語 strtok関数
【C言語】strtok/strtok_r/strsep関数の注意点と使い方【自作関数も紹介】

こういった悩みにお答えします. こういった私から学べます. 目次1 strtok/strtok_r/strsep関数1.1 strtok関数1.2 strtok_r関数1.3 strsep関数1.4 ...

続きを見る

C言語 文字列の検索
【C言語】文字列をstrstr関数で検索【ナイーブ法,KMP法,BM法】

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語で文字列の検索2 strchr/strrchr関数で文字の検索2.1 strchr/strrchr関数の使い方2.2 strc ...

続きを見る

limits.h,float.h

【C言語】処理系依存 最小値と最大値
【C言語】処理系依存の整数と浮動小数点数の最小値と最大値の取得

こういった悩みにお答えします. こういった私から学べます. 目次1 処理系依存の整数と浮動小数点数の最小値と最大値の取得2 処理系依存の整数の最小値と最大値の取得3 処理系依存の浮動小数点数の最小値と ...

続きを見る

math.h

C言語 四捨五入
【C言語】四捨五入,切り捨て,切り上げする標準ライブラリ関数と自作関数

こういった悩みにお答えします. こういった私から学べます. 目次1 四捨五入,切り捨て,切り上げ2 C言語で四捨五入,切り捨て,切り上げする標準ライブラリ関数2.1 round/roundf/roun ...

続きを見る

C言語 べき乗
【C言語】pow関数と自作関数でべき乗,累乗,2乗の計算

こういった悩みにお答えします. こういった私から学べます. 目次1 べき乗,累乗,2乗とは1.1 2乗の自作コード1.2 累乗の自作コード1.3 べき乗の自作コード2 pow関数でべき乗の計算3 自作 ...

続きを見る

C言語 atan/atan2関数
【C言語】atan/atan2関数と自作関数で逆正接の主値の計算

こういった悩みにお答えします. こういった私から学べます. 目次1 atan/atan2関数で逆正接の主値の計算2 自作関数で逆正接の主値の計算3 まとめ atan/atan2関数で逆正接の主値の計算 ...

続きを見る

time.h

C言語 sleep関数
【C言語】sleep/usleep/nanosleep/clock_nanosleep関数の使い方

こういった悩みにお答えします. こういった私から学べます. 目次1 sleep関数2 usleep関数3 nanosleep関数4 clock_nanosleep関数5 まとめ sleep関数 [cr ...

続きを見る

C言語 time関数
【C言語】time関数で現在時刻の取得

こういった悩みにお答えします. こういった私から学べます. 目次1 time関数2 ctime関数3 asctime/localtime/gmtime関数4 ctime/asctime/localti ...

続きを見る

C言語 clock関数
【C言語】clock関数でプログラムの実行時間の計測

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語でプログラムの実行時間の計測2 clock関数3 difftime関数4 clock_gettime関数5 getrusage ...

続きを見る

sys/socket.h

C言語 ソケット通信
【C言語】INETドメイン/UNIXドメインソケット通信によるネットワークプログラミング

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語のINETドメイン/UNIXドメインソケット通信によるネットワークプログラミング2 INETドメインソケット通信2.1 INE ...

続きを見る

regex.h

C言語 正規表現
【C言語】regcomp/regexec/regerror/regfree関数で正規表現の検索【grep/sed/awkコマンドでも紹介】

こういった悩みにお答えします. こういった私から学べます. 目次1 正規表現2 C言語のregcomp/regexec/regerror/regfree関数で正規表現の検索3 参考:grep/sed/ ...

続きを見る

C言語のアルゴリズム

整数のアルゴリズム

C言語 約数
【C言語】約数の判定【約数の個数と和の計算】

こういった悩みにお答えします. こういった私から学べます. 目次1 約数の判定2 \(\mathcal{O}(n)\)の約数判定アルゴリズム3 \(\mathcal{O}(\sqrt{n})\)の約数 ...

続きを見る

C言語 ユークリッドの互除法
【C言語】ユークリッドの互除法で最大公約数と最小公倍数の計算

こういった悩みにお答えします. こういった私から学べます. 目次1 ユークリッドの互除法2 C言語のユークリッドの互除法で最大公約数と最小公倍数の計算3 拡張ユークリッドの互除法4 拡張ユークリッドの ...

続きを見る

C言語 n進数
【C言語】10進数と2進数,8進数,16進数の相互変換

こういった悩みにお答えします. こういった私から学べます. 目次1 10進数と2進数の相互変換2 10進数と8進数の相互変換3 10進数と16進数の相互変換4 まとめ 10進数と2進数の相互変換 10 ...

続きを見る

C言語 素数
【C言語】エラトステネスの篩(ふるい)で素数の判定【サンダラムの篩,アトキンの篩】

こういった悩みにお答えします. こういった私から学べます. 目次1 エラトステネスの篩(ふるい)2 サンダラムの篩3 アトキンの篩4 まとめ エラトステネスの篩(ふるい) エラトステネスの篩(ふるい) ...

続きを見る

スワップのアルゴリズム

C言語 swap
【C言語】swap関数とswapマクロで値を交換

こういった悩みにお答えします. こういった私から学べます. 目次1 swap2 swap関数2.1 int型のswap関数2.2 double型のswap関数3 swapマクロ3.1 データ型を引数で ...

続きを見る

C言語 バイトスワップ
【C言語】バイトオーダーの交換(バイトスワップ)方法の紹介【x86命令のコード】

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語でバイトオーダーの交換(バイトスワップ)2 整数のバイトスワップ2.1 bswap_16/bswap_32/bswap_64関 ...

続きを見る

計算のアルゴリズム

C言語 最小 平均 最大 合計 標準偏差 中央
【C言語】最小値,平均値,最大値,合計値,標準偏差,中央値の計算

こういった悩みにお答えします. こういった私から学べます. 目次1 最小値,平均値,最大値,合計値,標準偏差の計算1.1 平方根を計算する標準ライブラリのsqrt関数を利用1.2 平方根を計算するmy ...

続きを見る

C言語 行列
【C言語】2次元配列で行列の四則演算(足し算,引き算,掛け算,割り算)【逆行列】

こういった悩みにお答えします. こういった私から学べます. 目次1 行列の四則演算(足し算,引き算,掛け算,割り算)2 行列の足し算と引き算3 行列の掛け算4 行列の割り算(逆行列の掛け算)4.1 2 ...

続きを見る

文字列処理のアルゴリズム

C言語 文字列の回転
【C言語】文字列の回転

こういった悩みにお答えします. こういった私から学べます. 目次1 C言語で文字列の回転2 文字列を回転するstring_left_rotation/string_right_rotation関数3 ...

続きを見る

C言語 二分探索
【C言語】二分探索で数値と文字列の検索

こういった悩みにお答えします. こういった私から学べます. 目次1 二分探索2 二分探索で数値を検索3 二分探索で文字列を検索 4 まとめ 二分探索 二分探索とは,ソート済み配列(またはリスト)のデー ...

続きを見る

C言語のデータ構造

C言語 リスト
【C言語】連結リストとは【片方向リスト,双方向リスト,双方向循環リスト】

こういった悩みにお答えします. こういった私から学べます. 目次1 連結リスト2 C言語のリスト2.1 片方向リスト2.2 双方向リスト2.3 双方向循環リスト3 リストの実例:Linuxカーネル3. ...

続きを見る

C言語 スタック
【C言語】スタックとは【x86のアセンブリ言語で解説】

こういった悩みにお答えします. こういった私から学べます. 目次1 スタック2 C言語のスタック3 x86の命令セットアーキテクチャでスタックを操作するpush/pop命令4 まとめ スタック スタッ ...

続きを見る

C言語 キュー
【C言語】キューとは【優先度キューの二項ヒープを紹介】

こういった悩みにお答えします. こういった私から学べます. 目次1 キュー2 C言語のキュー3 C言語の優先度キューの例「二項ヒープ」4 まとめ キュー キューとは,データを先入れ先出し(First ...

続きを見る

C言語 ハッシュテーブル
【C言語】ハッシュテーブルとは【ハッシュチェイン法,オープンアドレス法】

こういった悩みにお答えします. こういった私から学べます. 目次1 ハッシュテーブル(ハッシュ表)2 ハッシュチェイン法(オープンハッシュ法)3 オープンアドレス法(クローズドハッシュ法)4 まとめ ...

続きを見る

C言語の外部ライブラリ

C言語 リングバッファ
【C言語】おすすめのリングバッファのライブラリ

こういった悩みにお答えします. こういった私から学べます. 目次1 embedded-resources:おすすめのリングバッファのライブラリ2 embedded-resourcesのC言語のリングバ ...

続きを見る

C言語で数値解析

C言語 級数
【C言語】級数とは【自然数の和,1に収束する分数の和,バーゼル問題(オイラー級数)】

こういった悩みにお答えします. こういった私から学べます. 目次1 級数2 自然数の和3 1に収束する分数の和4 バーゼル問題(オイラー級数)5 まとめ 級数 級数とは,数や関数など互いに足すことので ...

続きを見る

C言語 二分法 ニュートン法
【C言語】二分法とニュートン法の違い

こういった悩みにお答えします. こういった私から学べます. 目次1 二分法とニュートン法の違い2 C言語による二分法のコード3 C言語によるニュートン法のコード4 まとめ 二分法とニュートン法の違い ...

続きを見る

C言語 数値微分
【C言語】数値微分とは【前進差分,後退差分,中心差分,常微分方程式,オイラー法,3次テイラー展開,4次ルンゲクッタ法】

こういった悩みにお答えします. こういった私から学べます. 目次1 数値微分2 C言語で数値微分:前進差分,後退差分,中心差分3 常微分方程式4 C言語で常微分方程式:オイラー法,3次テイラー展開,4 ...

続きを見る

C言語 数値積分
【C言語】数値積分とは【区分求積法,リーマン和,リーマン積分,台形公式,シンプソンの公式】

こういった悩みにお答えします. こういった私から学べます. 目次1 数値積分2 区分求積法とリーマン和3 区分求積法の応用:台形公式,シンプソンの公式4 まとめ 数値積分 数値積分とは,数値解析の分野 ...

続きを見る

C言語 gnuplot
【C言語】gnuplotでグラフ作成

こういった悩みにお答えします. こういった私から学べます. 目次1 gnuplot2 C言語からgnuplotでグラフ作成3 gnuplotでsin関数のグラフ作成3.1 gnuplotの標準関数にあ ...

続きを見る

C言語でマルチプロセス,マルチスレッド

C言語 プロセス
【C言語】プロセスの生成と実行【fork/wait/execve/getpid/getppid関数】

こういった悩みにお答えします. こういった私から学べます. 目次1 プロセス2 fork関数でプロセスの生成,wait関数で子プロセスの終了まで待機3 execve関数でコマンドの実行4 getpid ...

続きを見る

C言語 スレッド
【C言語】スレッドの生成と実行【pthread,マルチスレッド,スレッドIDの取得】

こういった悩みにお答えします. こういった私から学べます. 目次1 スレッド2 pthreadによるマルチスレッドプログラミング3 pthreadでスレッドIDの取得3.1 pthread_self関 ...

続きを見る

C言語でRaspberry Pi(ラズパイ)

C言語 ラズパイ3
【C言語】Raspberry Pi 3のユーザモードとカーネルモードでプログラムの実行

こういった悩みにお答えします. こういった私から学べます. 目次1 Raspberry Pi 32 Raspberry Pi 3のエミュレータ「QEMU」3 Raspberry Pi 3でC言語のプロ ...

続きを見る

C言語のプログラミングスクール,エージェント

C言語 プログラミングスクール
C言語を学べるおすすめのオンラインプログラミングスクール5社

こういった悩みにお答えします. 本記事の内容:C言語を学べるおすすめのオンラインプログラミングスクール5社 SAMURAI ENGINEER(侍エンジニア) CODEGYM Monthly(コードジム ...

続きを見る

C言語エンジニア フリーランスエージェント
C言語エンジニアにおすすめのフリーランスエージェント

こういった悩みにお答えします. こういった私が解説していきます. フリーランスエージェントは100社以上あるので全部登録するのは非常に面倒です. 私は30社以上のエージェントに登録した経験がありますが ...

続きを見る

C言語の応用システム

リアルタイムシステム
元東大教員から学ぶリアルタイムシステム

こういった私から学べます. リアルタイムシステムとは,決められた時間(デッドライン)までに処理を完了しなければならない性質をもつシステムのことです. リアルタイムシステムは,ロボット,自動車や航空機な ...

続きを見る

Linuxカーネル
元東大教員から学ぶLinuxカーネル

こういった私から学べます. Linuxカーネルとは,C言語で開発されたオープンソースのOSです. Linuxカーネルは主に以下のコンピュータで広く利用されています. スーパーコンピュータ サーバ An ...

続きを見る