struct node {int n; int k; int arr[n]};
コンパイル前に配列nのサイズがわかっていません。実行中にユーザーから取得されます。構造体のint配列メンバーを初期化する方法は?
struct node {int n; int k; int arr[n]};
コンパイル前に配列nのサイズがわかっていません。実行中にユーザーから取得されます。構造体のint配列メンバーを初期化する方法は?
このコードから参照を取得することができますが、それが動作するかどうかはわかりませんが、これから参照できます。
my_struct_t *myStruct;
size_t noOfElements;
size_t completeSize;
int index;
/* ...code which sets the number of elements at runtime... */
completeSize = sizeof(my_struct_t) * noOfElements;
myStruct = malloc(completeSize);
memset(myStruct, 0, completeSize);
/* ...and then access it as if it were an array...*/
myStruct[index].someInt = 10; // index < noOfElements
メモリは、構造自体に割り当てることはできませんが、あなたの構造に配列へのポインタを定義することができますし、後であなたが「N」の大きさとのmallocまたは新しい()を使用してメモリを割り当てることができます。
あなたの構造を定義する方法は次のとおりです。
fun() {
node obj;
obj.arr = (int*)malloc(sizeof(int)*obj.n);
}
2)新しい()
fun() {
node obj;
obj.arr = new int(obj.n);
}
を使用して:
struct node {int n; int k; int *arr};
は、mallocを使用して、あなたが以下のような構造のオブジェクトを使用してそれを行うことができますメモリ、
1)を割り当てるには
これは宿題のように聞こえます。 –