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
-
データ構造体での配列表現の配列
このセクションでは、多次元配列の別の表現を示します。ここでは、配列の配列表現が表示されます。この形式では、複数の配列の開始アドレスを保持している配列があります。表現は次のようになります。 これは、サイズ[7x8]の2次元配列xです。各行は、単一の1次元配列として表されます。初期配列は、これらの単一配列のアドレスを保持しています。これらはアドレスの配列であるため、ポインタの配列であると言えます。各ポインタは別の配列のアドレスを保持しています。 この種の配列を作成すると、以下のような新しいキーワードを使用できます- int [][] x = new int[7][8]; 位置x[i、j
-
データ構造内の単一配列内の複数のリスト
配列表現は、時間の経過とともに変化するデータを格納する場合、基本的にスペースを浪費します。一部のデータを格納するために、配列に複数の値を格納するのに十分な大きさのスペースを割り当てます。配列のサイズを大きくするために、配列の倍増基準を使用するとします。 現在のアレイサイズが8192であると考えてください。これはいっぱいです。したがって、配列ダブリング手法を使用してそれを増やす必要があります。したがって、新しい配列サイズは16384になります。次に、8192要素を古い配列から新しい配列にコピーしてから、古い配列の割り当てを解除します。これで、古い配列のスペースの割り当てを解除する前に、配列サイ