2013-01-06 52 views
3
typedef struct all{ 
    int x; 
    int ast[5]; 
}ALL; 

ALL x[5]; 

int main(void){ 
    ALL y[5]; 
    // ... 
} 

我將如何設置一個常數值爲ast[5],以便所有的數組變量將具有相同的值ast[]如何在一個結構數組中設置一個常量值?

+1

你根本做不到。 – cnicutar

+0

爲什麼?有沒有其他方法可以做到這一點? –

+0

語言根本無法表達它(還)。 – cnicutar

回答

0

我假設從標籤問題是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 

這種方法的缺點是您正在從聲明一個數組到使用堆上的內存。
此外,您不能讓某人創建一個特定大小的數組,並將其值以您希望的方式分配給它。

+1

感謝您的答案。 –

+0

請upvote或接受你的問題的答案,以鼓勵回答,併爲其他尋找同一問題的答案的利益... :-) – user1055604

+0

是的,我以爲我做到了:) –

1
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}; 
    // ... 
} 
+0

謝謝。如果我要爲ast []設置5個隨機數,該怎麼辦? –

+0

在使用變量進行其他初始化之前,在'main()'內部分配隨機數字......但它們不是「常量值」。 – pmg

相關問題