typedef struct all{
int x;
int ast[5];
}ALL;
ALL x[5];
int main(void){
ALL y[5];
// ...
}
我將如何設置一個常數值爲ast[5]
,以便所有的數組變量將具有相同的值ast[]
?如何在一個結構數組中設置一個常量值?
typedef struct all{
int x;
int ast[5];
}ALL;
ALL x[5];
int main(void){
ALL y[5];
// ...
}
我將如何設置一個常數值爲ast[5]
,以便所有的數組變量將具有相同的值ast[]
?如何在一個結構數組中設置一個常量值?
我假設從標籤問題是C而不是C++。
你可以有一個函數,它的結構數組的大小,並返回一個指向數組的開始,像這樣:
typedef struct my_struct{
int i;
int var[5];
} my_struct;
my_struct* init_my_struct(int size){
my_struct *ptr = malloc(size * sizeof(struct));
for(my_struct *i = ptr; (i - ptr) < size; i++)
i->var = // whatever value you want to assign to it
// or copy a static value to the the array element
}
現在你可以在這樣的代碼中使用它:
my_struct *my_struct_ptr = init_my_struct(5); // values inited as required
這種方法的缺點是您正在從聲明一個數組到使用堆上的內存。
此外,您不能讓某人創建一個特定大小的數組,並將其值以您希望的方式分配給它。
typedef struct all {
int x;
int ast[5];
} ALL;
ALL x[5];
ALL constast = {0, {1, 2, 3, 4, 5}};
int main(void) {
ALL y[5] = {[0] = constast, [1] = constast, [2] = constast,
[3] = constast, [4] = constast};
// ...
}
謝謝。如果我要爲ast []設置5個隨機數,該怎麼辦? –
在使用變量進行其他初始化之前,在'main()'內部分配隨機數字......但它們不是「常量值」。 – pmg
你根本做不到。 – cnicutar
爲什麼?有沒有其他方法可以做到這一點? –
語言根本無法表達它(還)。 – cnicutar