logo

C のデータ型

データ型は、整数、浮動小数点数、文字など、変数に格納できるデータのタイプを指定します。

C データ型

C言語には以下のデータ型があります。

種類データ型
基本データ型int、char、float、double
派生データ型配列、ポインタ、構造体、共用体
列挙型データ型列挙型
無効なデータ型空所

基本的なデータ型

基本的なデータ型は整数ベースと浮動小数点ベースです。 C 言語は、符号付きリテラルと符号なしリテラルの両方をサポートします。

基本データ型のメモリ サイズは、32 ビットまたは 64 ビットのオペレーティング システムによって異なる場合があります。

文字列をJSON Javaに変換します

基本的なデータ型を見てみましょう。そのサイズが与えられています 32ビットアーキテクチャに従って

データ型メモリー容量範囲
チャー 1バイト−128〜127
符号付き文字1バイト−128〜127
符号なし文字1バイト0~255
短い 2バイト−32,768 ~ 32,767
短い署名付き2バイト−32,768 ~ 32,767
符号なしショート2バイト0~65,535
整数 2バイト−32,768 ~ 32,767
符号付き整数2バイト−32,768 ~ 32,767
符号なし整数2バイト0~65,535
短い整数 2バイト−32,768 ~ 32,767
符号付き short int2バイト−32,768 ~ 32,767
unsigned short int2バイト0~65,535
長い整数 4バイト-2,147,483,648 ~ 2,147,483,647
符号付き長整数型4バイト-2,147,483,648 ~ 2,147,483,647
符号なし長整数4バイト0 ~ 4,294,967,295
浮く 4バイト
ダブル 8バイト
ロングダブル 10バイト

整数:

整数 小数部や小数部を含まない整数であり、 int データ型 それらを表すために使用されます。

これは、次のような変数に頻繁に適用されます。 価値観 、 のような カウント、インデックス 、またはその他の数値。の int データ型 両方を表す可能性があります ポジティブ そして 負の数 デフォルトで署名されているためです。

アン 整数 かかります 4バイト ほとんどのデバイスでは、約 -20 億から +20 億の値を保存できます。

チャー:

個々の文字は次のように表されます。 文字データ型 。通常は保持するために使用されます アスキー または UTF-8 エンコーディング スキームの文字 、 のような 文字、数字、記号 、 または カンマ 。がある 256文字 これは単一の文字で表すことができ、メモリの 1 バイトを占有します。などのキャラクター 「A」、「B」、「5」、 または 「$」 一重引用符で囲まれます。

浮く:

整数を表すには、 浮動データ型 。浮動小数点数は、小数点以下の単位や小数点以下の数値を表すために使用できます。

フロート型 通常、非常に高い精度を必要とする変数に使用されますが、あまり正確ではない可能性があります。約の精度で値を保存できます。 小数点以下6桁 そして約の範囲 3.4×1038 4バイト 記憶の。

ダブル:

2 つのデータ型を使用して表す 2 つの浮動小数点整数 。科学計算や金融アプリケーションなど、さらなる精度が必要な場合は、float と比較して高い精度が得られます。

ダブルタイプ を使用します。 8バイト 記憶力があり、精度は約 小数点以下 15 桁、より大きな値が得られます 。 C では、明示的な型が指定されていない場合、デフォルトで浮動小数点数を double として扱います。

 int age = 25; char grade = 'A'; float temperature = 98.6; double pi = 3.14159265359; 

上の例では、4 つの変数を宣言します。 int変数 その人の年齢に対して、 文字変数 生徒の学年の場合、 浮動小数点変数 温度測定値の場合は 2 つの変数、 円周率。

派生データ型

基本的なデータ型以外にも、C はサポートします。 派生データ型、 含む 配列、ポインタ、構造体、 そして 労働組合 。これらのデータ型により、プログラマは異種データを処理し、メモリを直接変更し、複雑なデータ構造を構築できるようになります。

配列:

アン 配列、派生データ型 、シーケンスを保存できます。 固定サイズの要素 同じタイプの。これは、同じデータの複数のターゲットを同じ名前で結合するためのメカニズムを提供します。

インデックスは、配列の要素にアクセスするために使用されます。 0 インデックス 最初のエントリーの場合。配列のサイズは宣言時に固定され、プログラムの実行中に変更することはできません。配列コンポーネントは隣接するメモリ領域に配置されます。

配列を宣言して利用する例を次に示します。

セッションの有効期限が切れています
 #include int main() { int numbers[5]; // Declares an integer array with a size of 5 elements // Assign values to the array elements numbers[0] = 10; numbers[1] = 20; numbers[2] = 30; numbers[3] = 40; numbers[4] = 50; // Display the values stored in the array printf(&apos;Values in the array: &apos;); for (int i = 0; i <5; i++) { printf('%d ', numbers[i]); } printf('
'); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Values in the array: 10 20 30 40 50 </pre> <h3>Pointer:</h3> <p>A <strong> <em>pointer</em> </strong> is a derived data type that keeps track of another data type&apos;s memory address. When a <strong> <em>pointer</em> </strong> is declared, the <strong> <em>data type</em> </strong> it refers to is <strong> <em>stated first</em> </strong> , and then the <strong> <em>variable name</em> </strong> is preceded by <strong> <em>an asterisk (*)</em> </strong> .</p> <p>You can have incorrect access and change the value of variable using pointers by specifying the memory address of the variable. <strong> <em>Pointers</em> </strong> are commonly used in <strong> <em>tasks</em> </strong> such as <strong> <em>function pointers, data structures</em> </strong> , and <strong> <em>dynamic memory allocation</em> </strong> .</p> <p>Here is an example of declaring and employing a pointer:</p> <pre> #include int main() { int num = 42; // An integer variable int *ptr; // Declares a pointer to an integer ptr = # // Assigns the address of &apos;num&apos; to the pointer // Accessing the value of &apos;num&apos; using the pointer printf(&apos;Value of num: %d
&apos;, *ptr); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Value of num: 42 </pre> <h3>Structure:</h3> <p>A structure is a derived data type that enables the creation of composite data types by allowing the grouping of many data types under a single name. It gives you the ability to create your own unique data structures by fusing together variables of various sorts.</p> <ol class="points"> <li>A structure&apos;s members or fields are used to refer to each variable within it.</li> <li>Any data type, including different structures, can be a member of a structure.</li> <li>A structure&apos;s members can be accessed by using the dot (.) operator.</li> </ol> <p>A declaration and use of a structure is demonstrated here:</p> <pre> #include #include // Define a structure representing a person struct Person { char name[50]; int age; float height; }; int main() { // Declare a variable of type struct Person struct Person person1; // Assign values to the structure members strcpy(person1.name, &apos;John Doe&apos;); person1.age = 30; person1.height = 1.8; // Accessing the structure members printf(&apos;Name: %s
&apos;, person1.name); printf(&apos;Age: %d
&apos;, person1.age); printf(&apos;Height: %.2f
&apos;, person1.height); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Name: John Doe Age: 30 Height: 1.80 </pre> <h3>Union:</h3> <p>A derived data type called a <strong> <em>union</em> </strong> enables you to store various data types in the same memory address. In contrast to structures, where each member has a separate memory space, members of a union all share a single memory space. A value can only be held by one member of a union at any given moment. When you need to represent many data types interchangeably, unions come in handy. Like structures, you can access the members of a union by using the <strong> <em>dot (.)</em> </strong> operator.</p> <p>Here is an example of a union being declared and used:</p> <pre> #include // Define a union representing a numeric value union NumericValue { int intValue; float floatValue; char stringValue[20]; }; int main() { // Declare a variable of type union NumericValue union NumericValue value; // Assign a value to the union value.intValue = 42; // Accessing the union members printf(&apos;Integer Value: %d
&apos;, value.intValue); // Assigning a different value to the union value.floatValue = 3.14; // Accessing the union members printf(&apos;Float Value: %.2f
&apos;, value.floatValue); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Integer Value: 42 Float Value: 3.14 </pre> <h2>Enumeration Data Type</h2> <p>A set of named constants or <strong> <em>enumerators</em> </strong> that represent a collection of connected values can be defined in C using the <strong> <em>enumeration data type (enum). Enumerations</em> </strong> give you the means to give names that make sense to a group of integral values, which makes your code easier to read and maintain. </p> <p>Here is an example of how to define and use an enumeration in C:</p> <pre> #include // Define an enumeration for days of the week enum DaysOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; int main() { // Declare a variable of type enum DaysOfWeek enum DaysOfWeek today; // Assign a value from the enumeration today = Wednesday; // Accessing the enumeration value printf(&apos;Today is %d
&apos;, today); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Today is 2 </pre> <h2>Void Data Type</h2> <p>The <strong> <em>void data type</em> </strong> in the C language is used to denote the lack of a particular type. <strong> <em>Function return types, function parameters</em> </strong> , and <strong> <em>pointers</em> </strong> are three situations where it is frequently utilized.</p> <h3>Function Return Type:</h3> <p>A <strong> <em>void return type</em> </strong> function does not produce a value. A <strong> <em>void function</em> </strong> executes a task or action and ends rather than returning a value.</p> <p> <strong>Example:</strong> </p> <pre> void printHello() { printf(&apos;Hello, world!
&apos;); } </pre> <h3>Function Parameters: </h3> <p>The <strong> <em>parameter void</em> </strong> can be used to indicate that a function accepts no arguments.</p> <p> <strong>Example:</strong> </p> <pre> void processInput(void) { /* Function logic */ } </pre> <h3>Pointers:</h3> <p>Any address can be stored in a pointer of type <strong> <em>void*</em> </strong> , making it a universal pointer. It offers a method for working with pointers to ambiguous or atypical types.</p> <p> <strong>Example:</strong> </p> <pre> void* dataPtr; </pre> <p>The <strong> <em>void data type</em> </strong> is helpful for defining functions that don&apos;t accept any arguments when working with generic pointers or when you wish to signal that a function doesn&apos;t return a value. It is significant to note that while <strong> <em>void*</em> </strong> can be used to build generic pointers, void itself cannot be declared as a variable type.</p> <p>Here is a sample of code that shows how to utilize void in various situations:</p> <pre> #include // Function with void return type void printHello() { printf(&apos;Hello, world!
&apos;); } // Function with void parameter void processInput(void) { printf(&apos;Processing input...
&apos;); } int main() { // Calling a void function printHello(); // Calling a function with void parameter processInput(); // Using a void pointer int number = 10; void* dataPtr = &amp;number; printf(&apos;Value of number: %d
&apos;, *(int*)dataPtr); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Hello, world! Processing input... Value of number: 10 </pre> <h2>Conclusion:</h2> <p>As a result, <strong> <em>data types</em> </strong> are essential in the C programming language because they define the kinds of information that variables can hold. They provide the data&apos;s size and format, enabling the compiler to allot memory and carry out the necessary actions. Data types supported by C include <strong> <em>void, enumeration, derived</em> </strong> , and <strong> <em>basic types</em> </strong> . In addition to floating-point types like <strong> <em>float</em> </strong> and <strong> <em>double</em> </strong> , basic data types in C also include integer-based kinds like <strong> <em>int, char</em> </strong> , and <strong> <em>short</em> </strong> . These forms can be <strong> <em>signed</em> </strong> or <strong> <em>unsigned</em> </strong> , and they fluctuate in size and range. To create dependable and efficient code, it is crucial to comprehend the memory size and scope of these types.</p> <p>A few examples of <strong> <em>derived data types</em> </strong> are <strong> <em>unions, pointers, structures</em> </strong> , and <strong> <em>arrays</em> </strong> . Multiple elements of the same kind can be stored together in contiguous memory due to arrays. <strong> <em>Pointers</em> </strong> keep track of memory addresses, allowing for fast data structure operations and dynamic memory allocation. While <strong> <em>unions</em> </strong> allow numerous variables to share the same memory space, structures group relevant variables together.</p> <p> <strong> <em>Code</em> </strong> becomes more legible and maintainable when named constants are defined using enumeration data types. <strong> <em>Enumerations</em> </strong> give named constants integer values to enable the meaningful representation of related data. The void data type indicates the lack of a particular type. It is used as a return type for both <strong> <em>functions</em> </strong> and <strong> <em>function parameters</em> </strong> that don&apos;t take any arguments and don&apos;t return a value. The <strong> <em>void* pointer</em> </strong> also functions as a general pointer that can <strong> <em>store addresses</em> </strong> of various types.</p> <p>C programming requires a solid understanding of <strong> <em>data types</em> </strong> . Programmers can ensure adequate memory allocation, avoid <strong> <em>data overflow</em> </strong> or <strong> <em>truncation</em> </strong> , and enhance the readability and maintainability of their code by selecting the right <strong> <em>data type</em> </strong> . C programmers may create <strong> <em>effective, dependable</em> </strong> , and well-structured code that satisfies the requirements of their applications by having a firm understanding of data types.</p> <hr></5;>

ポインタ:

ポインタ は、別のデータ型のメモリ アドレスを追跡する派生データ型です。とき ポインタ 宣言されている場合、 データ・タイプ それが指すのは 最初に述べた 、そして、 変数名 の前にある アスタリスク (*)

変数のメモリ アドレスを指定することにより、ポインターを使用して不正にアクセスし、変数の値を変更する可能性があります。 ポインタ で一般的に使用されます タスク のような 関数ポインタ、データ構造 、 そして 動的メモリ割り当て

ポインタを宣言して使用する例を次に示します。

 #include int main() { int num = 42; // An integer variable int *ptr; // Declares a pointer to an integer ptr = # // Assigns the address of &apos;num&apos; to the pointer // Accessing the value of &apos;num&apos; using the pointer printf(&apos;Value of num: %d
&apos;, *ptr); return 0; } 

出力:

 Value of num: 42 

構造:

構造体は、多数のデータ型を 1 つの名前でグループ化できるようにすることで、複合データ型の作成を可能にする派生データ型です。さまざまな種類の変数を結合して、独自の独自のデータ構造を作成することができます。

レル対セントス
  1. 構造体のメンバーまたはフィールドは、構造体内の各変数を参照するために使用されます。
  2. さまざまな構造体を含む任意のデータ型を構造体のメンバーにすることができます。
  3. 構造体のメンバーには、ドット (.) 演算子を使用してアクセスできます。

構造体の宣言と使用法を次に示します。

 #include #include // Define a structure representing a person struct Person { char name[50]; int age; float height; }; int main() { // Declare a variable of type struct Person struct Person person1; // Assign values to the structure members strcpy(person1.name, &apos;John Doe&apos;); person1.age = 30; person1.height = 1.8; // Accessing the structure members printf(&apos;Name: %s
&apos;, person1.name); printf(&apos;Age: %d
&apos;, person1.age); printf(&apos;Height: %.2f
&apos;, person1.height); return 0; } 

出力:

 Name: John Doe Age: 30 Height: 1.80 

連合:

と呼ばれる派生データ型 連合 を使用すると、さまざまなデータ型を同じメモリ アドレスに保存できます。各メンバーが個別のメモリ空間を持つ構造体とは対照的に、共用体のメンバーはすべて単一のメモリ空間を共有します。値は、常に共用体の 1 人のメンバーのみが保持できます。多くのデータ型を互換的に表す必要がある場合、共用体が便利です。構造体と同様に、共用体のメンバーには、 ドット(.) オペレーター。

以下は、宣言および使用される共用体の例です。

 #include // Define a union representing a numeric value union NumericValue { int intValue; float floatValue; char stringValue[20]; }; int main() { // Declare a variable of type union NumericValue union NumericValue value; // Assign a value to the union value.intValue = 42; // Accessing the union members printf(&apos;Integer Value: %d
&apos;, value.intValue); // Assigning a different value to the union value.floatValue = 3.14; // Accessing the union members printf(&apos;Float Value: %.2f
&apos;, value.floatValue); return 0; } 

出力:

 Integer Value: 42 Float Value: 3.14 

列挙型データ型

名前付き定数のセット、または 列挙子 接続された値のコレクションを表すものは、次を使用して C で定義できます。 列挙データ型 (enum)。列挙 整数値のグループに意味のある名前を付ける手段が提供されるため、コードが読みやすく、保守しやすくなります。

Java 変数 変数

C で列挙型を定義して使用する方法の例を次に示します。

 #include // Define an enumeration for days of the week enum DaysOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; int main() { // Declare a variable of type enum DaysOfWeek enum DaysOfWeek today; // Assign a value from the enumeration today = Wednesday; // Accessing the enumeration value printf(&apos;Today is %d
&apos;, today); return 0; } 

出力:

 Today is 2 

無効なデータ型

無効なデータ型 C 言語では、特定の型が存在しないことを示すために使用されます。 関数の戻り値の型、関数パラメータ 、 そして ポインタ よく使われるのは次の 3 つの状況です。

関数の戻り値の型:

戻り値の型が void 関数は値を生成しません。あ ボイド関数 値を返すのではなく、タスクまたはアクションを実行して終了します。

例:

 void printHello() { printf(&apos;Hello, world!
&apos;); } 

関数パラメータ:

パラメータが無効です 関数が引数を受け入れないことを示すために使用できます。

例:

 void processInput(void) { /* Function logic */ } 

ポインタ:

任意のアドレスを次の型のポインタに格納できます。 空所* 、普遍的なポインタになります。これは、あいまいな型または非定型型へのポインターを操作する方法を提供します。

例:

 void* dataPtr; 

無効なデータ型 は、ジェネリック ポインターを使用する場合、または関数が値を返さないことを通知する場合に、引数を受け入れない関数を定義する場合に役立ちます。次のことに注意することが重要です。 空所* はジェネリック ポインターの構築に使用できますが、void 自体を変数型として宣言することはできません。

以下は、さまざまな状況で void を利用する方法を示すコードのサンプルです。

個人利用におけるインスタグラムのメリット
 #include // Function with void return type void printHello() { printf(&apos;Hello, world!
&apos;); } // Function with void parameter void processInput(void) { printf(&apos;Processing input...
&apos;); } int main() { // Calling a void function printHello(); // Calling a function with void parameter processInput(); // Using a void pointer int number = 10; void* dataPtr = &amp;number; printf(&apos;Value of number: %d
&apos;, *(int*)dataPtr); return 0; } 

出力:

 Hello, world! Processing input... Value of number: 10 

結論:

結果として、 データ型 は、変数が保持できる情報の種類を定義するため、C プログラミング言語では不可欠です。これらはデータのサイズと形式を提供し、コンパイラーがメモリを割り当てて必要なアクションを実行できるようにします。 C でサポートされるデータ型には次のものがあります。 無効、列挙、派生 、 そして 基本的なタイプ 。のような浮動小数点型に加えて、 浮く そして ダブル 、C の基本的なデータ型には、次のような整数ベースの型も含まれます。 int、char 、 そして 短い 。これらのフォームは、 署名済み または 署名されていない 、サイズと範囲が変動します。信頼性が高く効率的なコードを作成するには、これらのタイプのメモリ サイズと範囲を理解することが重要です。

いくつかの例 派生データ型 共用体、ポインタ、構造体 、 そして 配列 。配列により、同じ種類の複数の要素を連続したメモリに一緒に格納できます。 ポインタ メモリ アドレスを追跡し、高速なデータ構造操作と動的なメモリ割り当てを可能にします。その間 労働組合 多数の変数が同じメモリ空間を共有できるようにし、構造体は関連する変数をグループ化します。

コード 列挙データ型を使用して名前付き定数を定義すると、読みやすく保守しやすくなります。 列挙 名前付き定数に整数値を与えると、関連データの意味のある表現が可能になります。 void データ型は、特定の型が存在しないことを示します。両方の戻り値の型として使用されます。 機能 そして 関数パラメータ 引数を取らず、値も返しません。の void* ポインタ また、一般的なポインタとしても機能します。 店舗の住所 さまざまな種類の。

C プログラミングには、次のことをしっかりと理解する必要があります。 データ型 。プログラマは適切なメモリ割り当てを確保し、 データオーバーフロー または 切り捨て 、適切なオプションを選択することでコードの読みやすさと保守性を向上させます。 データ・タイプ 。 C プログラマーは作成することができます 効果的、信頼できる 、データ型をしっかり理解することでアプリケーションの要件を満たす、適切に構造化されたコード。