Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cの構造体の柔軟な配列メンバー


Cの構造体の柔軟な配列メンバーは、構造体内の次元なしで配列を宣言でき、そのサイズは本質的に柔軟であることを意味します。柔軟な配列メンバーは、クラスの最後のメンバーである必要があります。

次に例を示します:

#include
#include
#include
//structure of type employee and must contain at least one more named member
in addition to the flexible array member.
struct employee
{
   int emp_id;
   int name_len;
   int emp_size; //‘emp_size’ variable is used to store the size of flexible
   character array emp_name[].
   char emp_name[]; //Flexible array member emp_name[] should be the last member of class.
};
struct employee *createEmployee(struct employee *e, int id, char a[])
{
   e = (struct employee *)malloc( sizeof(*e) + sizeof(char) * strlen(a)); //memory allocation
   e->emp_id = id;
   e->name_len = strlen(a);
   //Assigning size according to size of emp_name which is a copy of user provided
   array a[].
   strcpy(e->emp_name, a);
   return e;
}
void printEmployee(struct employee *e) //print the details of the employee.
{
   printf("Employee_id : %d\n" "Employee Name : %s\n" "Name Length: %d\n\n", e->emp_id, e->emp_name, e->name_len);
}
int main()
{
   struct employee *e1 = createEmployee(e1, 26, "Ram");
   struct employee *e2 = createEmployee(e2, 53, "Madhu");
   printEmployee(e1);
   printEmployee(e2);
   printf("Size of structure Employee: %lu\n",
   sizeof(struct employee));
   return 0;
}

出力

Employee_id : 26
Employee Name : Ram
Name Length: 3
Employee_id : 53
Employee Name : Madhu
Name Length: 5
Size of structure Employee: 12

  1. データ構造体での配列表現の配列

    このセクションでは、多次元配列の別の表現を示します。ここでは、配列の配列表現が表示されます。この形式では、複数の配列の開始アドレスを保持している配列があります。表現は次のようになります。 これは、サイズ[7x8]の2次元配列xです。各行は、単一の1次元配列として表されます。初期配列は、これらの単一配列のアドレスを保持しています。これらはアドレスの配列であるため、ポインタの配列であると言えます。各ポインタは別の配列のアドレスを保持しています。 この種の配列を作成すると、以下のような新しいキーワードを使用できます- int [][] x = new int[7][8]; 位置x[i、j

  2. データ構造内の単一配列内の複数のリスト

    配列表現は、時間の経過とともに変化するデータを格納する場合、基本的にスペースを浪費します。一部のデータを格納するために、配列に複数の値を格納するのに十分な大きさのスペースを割り当てます。配列のサイズを大きくするために、配列の倍増基準を使用するとします。 現在のアレイサイズが8192であると考えてください。これはいっぱいです。したがって、配列ダブリング手法を使用してそれを増やす必要があります。したがって、新しい配列サイズは16384になります。次に、8192要素を古い配列から新しい配列にコピーしてから、古い配列の割り当てを解除します。これで、古い配列のスペースの割り当てを解除する前に、配列サイ