2012-09-28 58 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