可変長配列を含む構造体を初期化する方法があるかどうか分かっていますか?別の変数で配列を初期化せずに(mallocを使わずに) 。可変長配列を持つ構造体をCで初期化する
void my_function (int size) {
int values[size];
struct my_struct mystr = {
.values = values,
.size = size
};
...
}
(アレイは、その後、構造、最初に初期化される。これは、働いているが、それは厄介になります。私がいることを持っている私のコードでは今のところ
struct my_struct {
int *values;
int size;
}
:
私の構造は、このようになります配列の別の変数を宣言することができます。
これはおそらくうまくいくでしょう:
void my_function (int size) {
struct my_struct mystr = {
.values = calloc (size, sizeof (int)),
.size = size
};
...
}
(私はmallocをを使用したくない)
しかし、私が書きたいことのようなものです:
void my_function (int size) {
struct my_struct mystr = {
.values = (int[size]){},
.size = size
};
...
}
任意のアイデア?
スペースを割り当てることなく配列を使用したいですか? – GMichael
私は配列のためのスペースを割り当てる必要があることを知っていますが、 'int values [size];'のような中間変数を使わずにしたいと思います。 – FClad
'.values = calloc(size、sizeof(int))の何が問題なのですか? – GMichael