C言語」タグアーカイブ

0と’\0’とNULL

C言語の変数には型があります。リテラルにも型があります。

数値リテラル

  • 0U : unsigned
  • 0L : long
  • 0UL : unsigned long
  • 0LL : long long
  • 0ULL : unsigned long long
  • 0.0F : float

サフィックス

文字リテラル

  • '\0' : 文字列終端

※ ASCIIコード : NUL, null terminator, ナル文字, ヌル文字

NULL : 空ポインタ定数(ナル・ポインタ、ヌル・ポインタ)

[C言語] インクルードファイルの検索順序

角括弧で囲まれた場合

  1. システム標準のディレクトリ
  2. -I/I オプション、環境変数で指定されたディレクトリ

二重引用符で囲まれた場合

  1. #includeが記述されたファイルと同じディレクトリ
  2. 角括弧で囲まれた場合と同じ順序で同じディレクトリ

外部リンク

[C言語] setjmp() と longjmp() の使いかた

C言語の標準ライブラリ関数 setjmp() と longjmp() を呼び出すことで多段の関数呼出階層を飛び越えるジャンプ(いわゆるGOTO処理)を実現できます。しかしながら、現代的なプログラミングでは GOTO文 が忌避されるように、setjmp() と longjmp() を使ったジャンプは推奨されません。やむを得ず setjmp() と longjmp() で実装された既存のソースコードを理解するための助けとなることを目論んだ解説です。

多段の関数呼出階層
関数の中から下位の関数を呼び出して、その下位の関数の中から下位の下位の関数を呼び出して、その下位の下位の関数の中から下位の下位の下位の関数を呼び出す、といった構造

続きを読む

[C言語] 多次元配列へのポインタ

C言語の多次元配列へのポインタの説明とサンプルコードです。

1. 配列要素へのポインタ

最初は導入です。C言語の入門書にも登場する配列とポインタの関係を説明します。

1.1. 一次元配列とポインタの組み合わせ

もっともシンプルな例です。整数型の1次元配列を定義して、配列の先頭要素へのアドレスをポインタ変数 int *top_of_columns に代入しています。「ポインタ top_of_columns は一次元配列の先頭要素を指している」ということを明確にするために、2つの一次元配列を用意して、途中で指している一次元配列を書き換えています。

続きを読む

[C言語] enum型 の サイズ

  • [Q] C言語において enum 型のサイズは決まっているか?
  • [A] 決まっていない。

enum型はsizeof(int)を超えることはない。

Microsoft Visual Studio において enum型 は int で固定である。

一方, 処理系(IAR Embedded Workbench, CodeWarrierなど)によってはenum定数で保持に必要な最小の型を使用する。範囲指定がなければ unsigned よりも signed を優先する。

[C/C++] 内部結合と外部結合

  • 内部結合 : Internal Linkage
  • 外部結合 : External Linkage

ファイルスコープのオブジェクト定義(いわゆるグローバル変数定義)

  static 記憶域指定子なし extern
C言語 内部結合定義 外部結合定義 仕様なし
C++ 内部結合定義 非const: 外部結合定義
const: 内部結合定義
外部結合定義

続きを読む