2012-09-28 56 views
1

這是主要的結構:如何使用指針訪問動態數組結構的成員?

#include <iostream> 
using namespace std; 

struct CandyBar 
{ 
    char brand_name[30]; 
    float candy_weight; 
    int candy_calories; 
}; 

int main() 
{ 
    CandyBar * snack = new CandyBar [3]; 

    return 0; 
} 

我設法初始化動態分配的3層結構中3個元素的數組。 我試圖通過訪問該結構:

snack[0]->brand_name = "Whatever"; 

沒有結果,甚至與其他方法:

(*snack[0]).brand_name = "Whatever"; 

我真的不知道,因爲我一直在研究這些了兩天的。

+0

你得到了什麼*錯誤? – nneonneo

+0

錯誤:表達式必須是可修改的左值 – User567845

+0

請參閱修改後的答案。 – nneonneo

回答

1

由於snack是一組結構,只需使用snack[0].brand_name即可。

你也不能只由C.使用strcpy,而不是使用=複製的字符串:

strcpy(snack[0].brand_name, "Kitkat"); 
+0

不幸的是,感謝您的輸入。 – User567845

+0

謝謝,我正在處理它。 – User567845

+0

我發現用=指定=對於成員操作符來說是非法的,而一般來說合法的就是char [20] = {「很多單詞」}; 冒險進入語言的深奧角落,謝謝。 – User567845

0

在C++中,字符串數組和數組不能使用=被複制。試試:

strcpy(snack[0].brand_name, "Whatever"); 
+0

感謝您的輸入,我完全忽略了我可以包括 User567845

+0

應該是'string * literals *是數組'。 –

+0

你們倆都在同一時間回答,所以我接受了nneonneo的最終答案,因爲他第一次回答,對不起。 – User567845