コンテンツにスキップ

C言語/char

出典: フリー教科書『ウィキブックス(Wikibooks)』

概要

[編集]

char 型は、C 言語において非常に重要なデータ型であり、文字を扱うための基本的な型です。char は「文字型」としても知られ、通常は 1 バイトのサイズを持ちますが、そのサイズはコンパイラやプラットフォームによって異なることもあります。char 型は、文字の処理だけでなく、バイト単位でデータを操作するためにも利用されます。

C 言語の初期の設計において、文字は基本的に数値として扱われ、char 型は 256 種類の異なる値を取ることができる型として使用されていました。この特性を活かして、char 型は文字だけでなく、バイナリデータの格納にも用いられています。

背景

[編集]

C 言語の設計当初から char 型は文字型として扱われ、char 型の変数には ASCII コードの値を格納することができるようになっています。ASCII コードは、文字や記号を数値に変換するための標準的な方法であり、char 型はこの形式に基づいて設計されました。char 型が 1 バイトのサイズを持つということは、1 バイトに 256 種類の異なる値を格納できることを意味し、これにより 文字コード、符号なし整数、符号付き整数の扱いに便利な型となっています。

char 型の特徴

[編集]
  • サイズ: C 言語では、char 型のサイズは必ず 1 バイト (8 ビット) です。これにより、char 型は 0 から 255 または -128 から 127 の範囲の整数を表現できます(符号付きか符号なしかによって異なります)。
  • 符号: char 型は、符号付き (signed) と符号なし (unsigned) のどちらかとして定義することができます。デフォルトでは、多くのコンパイラでは char は符号なしとして扱われることが多いですが、標準ではその符号は実装に依存します。
  • 文字コード: char 型は、文字を数値として表現するために使われます。たとえば、ASCII コードで 'A' は 65 であり、char c = 'A'; とすることで、c には 65 が格納されます。

使用方法

[編集]

char 型は通常、文字を格納するために使用されますが、数値を扱う場合にも利用されます。以下は、char 型を使った例です。

文字型の変数宣言

[編集]
#include <stdio.h>
int main() {
    char c = 'A';  // 文字 'A' を格納
    printf("The value of c is: %c\n", c);  // 出力: The value of c is: A
    return 0;
}

ここで char 型の変数 c に文字 'A' を代入しています。この場合、'A' は ASCII コード 65 として格納されます。

符号付きと符号なし char

[編集]

C 言語では、char 型は符号付き (signed char) と符号なし (unsigned char) の2種類があります。デフォルトで char がどちらに分類されるかはコンパイラに依存しますが、明示的に signed charunsigned char を指定することができます。

#include <stdio.h>
int main() {
    signed char sc = -128;  // 符号付き char
    unsigned char uc = 255; // 符号なし char

    printf("Signed char value: %d\n", sc);  // 出力: Signed char value: -128
    printf("Unsigned char value: %u\n", uc);  // 出力: Unsigned char value: 255

    return 0;
}

ここでは、signed charunsigned char を使って、それぞれの型の特性を示しています。符号付き char は負の値も格納できるのに対し、符号なし char は 0 から 255 の範囲で数値を格納します。

文字列と char

[編集]

文字列を扱う際にも char 型が活躍します。C 言語の文字列は、文字の配列として表現され、文字列の終端は特殊なヌル文字 ('\0') で示されます。

#include <stdio.h>
int main() {
    char str[] = "Hello, World!";  // 文字列の配列
    printf("The string is: %s\n", str);  // 出力: The string is: Hello, World!
    return 0;
}

ここで str は文字列 "Hello, World!" を格納した char 型の配列です。C 言語では文字列は基本的にヌル終端の文字配列として管理されます。

char とポインタ

[編集]

char 型はポインタとしてもよく使われます。文字列やバイトデータの処理において、char* 型のポインタを使うことで、動的にメモリを操作したり、文字列を操作することができます。

#include <stdio.h>
int main() {
    char* str = "Hello, Pointer!";
    printf("The string is: %s\n", str);  // 出力: The string is: Hello, Pointer!
    return 0;
}

ここでは char* 型のポインタ str を使って、文字列を扱っています。ポインタによって文字列の先頭アドレスを参照し、その内容を出力することができます。

文字とバイナリデータ

[編集]

char 型は、文字を扱うだけでなく、バイナリデータの格納にも使われます。例えば、ファイルの読み書きやネットワーク通信でのデータ処理において、char 型の配列はバイト単位でデータを扱うために利用されます。

#include <stdio.h>
int main() {
    char buffer[10];
    
    // バイナリデータを buffer に格納
    for (int i = 0; i < 10; i++) {
        buffer[i] = i + 1;  // 1 から 10 までの値を格納
    }
    
    for (int i = 0; i < 10; i++) {
        printf("buffer[%d] = %d\n", i, buffer[i]);
    }
    
    return 0;
}

このコードでは、char 型の配列 buffer を使って、1 から 10 までの整数値を格納し、バイト単位でデータを操作しています。

結論

[編集]

char 型は、C 言語において最も基本的で重要なデータ型の1つです。文字やバイナリデータの格納に使用されるだけでなく、符号付きと符号なしのバリエーションを持つため、数値データの操作にも使用されます。また、文字列を格納するための配列として広く利用され、C 言語における文字列操作やバイナリデータ処理の基本を形成します。