logo

Cの構造

なぜ構造を使用するのでしょうか?

C では、エンティティの複数の属性を保存する必要がある場合があります。エンティティが 1 つのタイプの情報をすべて持つ必要はありません。さまざまなデータ型のさまざまな属性を持つことができます。たとえば、エンティティ 学生 名前 (string)、ロール番号 (int)、マーク (float) を持つ場合があります。エンティティの生徒に関するこのような種類の情報を保存するには、次の方法があります。

  • 名前、ロール番号、マークを保存するための個別の配列を構築します。
  • 特別なデータ構造を使用して、さまざまなデータ型のコレクションを保存します。

最初のアプローチを詳しく見てみましょう。

 #include void main () { char names[2][10],dummy; // 2-dimensioanal character array names is used to store the names of the students int roll_numbers[2],i; float marks[2]; for (i=0;i<3;i++) { printf('enter the name, roll number, and marks of student %d',i+1); scanf('%s %d %f',&names[i],&roll_numbers[i],&marks[i]); scanf('%c',&dummy); enter will be stored into dummy character at each iteration } printf('printing details ...
'); for (i="0;i&lt;3;i++)" printf('%s %f
',names[i],roll_numbers[i],marks[i]); < pre> <p> <strong>Output</strong> </p> <pre> Enter the name, roll number, and marks of the student 1Arun 90 91 Enter the name, roll number, and marks of the student 2Varun 91 56 Enter the name, roll number, and marks of the student 3Sham 89 69 Printing the Student details... Arun 90 91.000000 Varun 91 56.000000 Sham 89 69.000000 </pre> <p>The above program may fulfill our requirement of storing the information of an entity student. However, the program is very complex, and the complexity increase with the amount of the input. The elements of each of the array are stored contiguously, but all the arrays may not be stored contiguously in the memory. C provides you with an additional and simpler approach where you can use a special data structure, i.e., structure, in which, you can group all the information of different data type regarding an entity.</p> <h2>What is Structure</h2> <p>Structure in c is a user-defined data type that enables us to store the collection of different data types. Each element of a structure is called a member. Structures ca; simulate the use of classes and templates as it can store various information </p> <p>The <strong>,struct</strong> keyword is used to define the structure. Let&apos;s see the syntax to define the structure in c.</p> <pre> struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; </pre> <p>Let&apos;s see the example to define a structure for an entity employee in c.</p> <pre> struct employee { int id; char name[20]; float salary; }; </pre> <p>The following image shows the memory allocation of the structure employee that is defined in the above example.</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure.webp" alt="c structure memory allocation"> <p>Here, <strong>struct</strong> is the keyword; <strong>employee</strong> is the name of the structure; <strong>id</strong> , <strong>name</strong> , and <strong>salary</strong> are the members or fields of the structure. Let&apos;s understand it by the diagram given below:</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure-2.webp" alt="c structure"> <h2>Declaring structure variable</h2> <p>We can declare a variable for the structure so that we can access the member of the structure easily. There are two ways to declare structure variable:</p> <ol class="points"> <li>By struct keyword within main() function</li> <li>By declaring a variable at the time of defining the structure.</li> </ol> <p> <strong>1st way:</strong> </p> <p>Let&apos;s see the example to declare the structure variable by struct keyword. It should be declared within the main function.</p> <pre> struct employee { int id; char name[50]; float salary; }; </pre> <p>Now write given code inside the main() function.</p> <pre> struct employee e1, e2; </pre> <p>The variables e1 and e2 can be used to access the values stored in the structure. Here, e1 and e2 can be treated in the same way as the objects in <a href="/c-tutorial">C++</a> and <a href="/java-tutorial">Java</a> .</p> <p> <strong>2nd way:</strong> </p> <p>Let&apos;s see another way to declare variable at the time of defining the structure.</p> <pre> struct employee { int id; char name[50]; float salary; }e1,e2; </pre> <h3>Which approach is good</h3> <p>If number of variables are not fixed, use the 1st approach. It provides you the flexibility to declare the structure variable many times.</p> <p>If no. of variables are fixed, use 2nd approach. It saves your code to declare a variable in main() function.</p> <h2>Accessing members of the structure</h2> <p>There are two ways to access structure members:</p> <ol class="points"> <li>By . (member or dot operator)</li> <li>By -&gt; (structure pointer operator)</li> </ol> <p>Let&apos;s see the code to access the <em>id</em> member of <em>p1</em> variable by. (member) operator.</p> <pre> p1.id </pre> <h3>C Structure example</h3> <p>Let&apos;s see a simple example of structure in C language.</p> <pre> #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal </pre> <p>Let&apos;s see another example of the structure in <a href="/c-programming-language-tutorial">C language</a> to store many employees information.</p> <pre> #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, &apos;James Bond&apos;); e2.salary=126000; //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); printf( &apos;employee 1 salary : %f
&apos;, e1.salary); //printing second employee information printf( &apos;employee 2 id : %d
&apos;, e2.id); printf( &apos;employee 2 name : %s
&apos;, e2.name); printf( &apos;employee 2 salary : %f
&apos;, e2.salary); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000 </pre> <hr></3;i++)>

上記のプログラムは、学生の情報を保存するという当社の要件を満たす可能性があります。ただし、プログラムは非常に複雑であり、入力の量に応じて複雑さが増します。各配列の要素は連続して格納されますが、すべての配列がメモリ内に連続して格納されるわけではありません。 C では、特別なデータ構造、つまり、エンティティに関するさまざまなデータ型のすべての情報をグループ化できる構造を使用できる、追加の簡単なアプローチが提供されます。

構造とは何か

c の構造体は、さまざまなデータ型のコレクションを保存できるようにするユーザー定義のデータ型です。構造体の各要素はメンバーと呼ばれます。構造 ca;さまざまな情報を保存できるため、クラスとテンプレートの使用をシミュレートします

文字列に変換する方法

,構造体 キーワードは構造を定義するために使用されます。 c で構造を定義する構文を見てみましょう。

 struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; 

c でエンティティ従業員の構造を定義する例を見てみましょう。

 struct employee { int id; char name[20]; float salary; }; 

次の図は、上記の例で定義された構造体employeeのメモリ割り当てを示しています。

C構造体のメモリ割り当て

ここ、 構造体 がキーワードです。 従業員 構造体の名前です。 ID名前 、 そして 給料 構造体のメンバーまたはフィールドです。以下の図で理解してみましょう。

c構造

構造体変数の宣言

構造体のメンバーに簡単にアクセスできるように、構造体の変数を宣言できます。構造体変数を宣言するには 2 つの方法があります。

  1. main() 関数内の struct キーワードによる
  2. 構造体の定義時に変数を宣言します。

1番目の方法:

structキーワードで構造体変数を宣言する例を見てみましょう。 main関数内で宣言する必要があります。

 struct employee { int id; char name[50]; float salary; }; 

次に、main() 関数内に指定されたコードを記述します。

 struct employee e1, e2; 

変数 e1 および e2 を使用して、構造体に格納されている値にアクセスできます。ここで、e1 と e2 は、次のオブジェクトと同じように扱うことができます。 C++ そして ジャワ

2番目の方法:

構造体定義時に変数を宣言する別の方法を見てみましょう。

 struct employee { int id; char name[50]; float salary; }e1,e2; 

どのアプローチが良いのか

変数の数が固定されていない場合は、1 番目のアプローチを使用します。これにより、構造体変数を何度でも宣言できる柔軟性が得られます。

いいえの場合。変数が固定されている場合は、2 番目のアプローチを使用します。 main() 関数で変数を宣言するコードを保存します。

構造体のメンバーへのアクセス

構造体のメンバーにアクセスするには 2 つの方法があります。

  1. による 。 (メンバーまたはドット演算子)
  2. -> (構造体ポインタ演算子) による

にアクセスするコードを見てみましょう。 ID のメンバー p1 によって変数。 (メンバー) オペレーター。

 p1.id 

C 構造例

C言語での構造の簡単な例を見てみましょう。

 #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); return 0; } 

出力:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

構造の別の例を見てみましょう。 C言語 多くの従業員の情報を保存するため。

動的配列Java
 #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, &apos;James Bond&apos;); e2.salary=126000; //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); printf( &apos;employee 1 salary : %f
&apos;, e1.salary); //printing second employee information printf( &apos;employee 2 id : %d
&apos;, e2.id); printf( &apos;employee 2 name : %s
&apos;, e2.name); printf( &apos;employee 2 salary : %f
&apos;, e2.salary); return 0; } 

出力:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000