【问题标题】:How to access the members of a dynamic array of structures with pointers?如何使用指针访问动态结构数组的成员?
【发布时间】:2012-09-28 01:18:27
【问题描述】:

这是主要结构:

#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";

我真的不知道,因为我已经研究了几天了。

【问题讨论】:

  • 错误:表达式必须是可修改的左值

标签: c++ arrays pointers structure dynamic-memory-allocation


【解决方案1】:

由于snack 是一个结构数组,因此只需使用snack[0].brand_name

您也不能仅通过在 C 中使用 = 来复制字符串。请改用 strcpy

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

【讨论】:

  • 我发现用 = 赋值对成员运算符来说是非法的,而一般来说是合法的,即 char words[20] = { "Lots of words"};冒险进入语言的深奥角落,谢谢。
  • 其实只有在初始化char[]数组时才合法(或者当它被当作char *处理时)。
【解决方案2】:

在 C++ 中,字符串是数组,不能使用 = 复制数组。试试:

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

【讨论】:

  • 感谢您的输入,我完全忽略了我可以包含
  • 应该是'字符串literals是数组'。
  • 你们同时回答,所以我接受了nneonneo的最终回答,因为他第一次回答,对不起。
猜你喜欢
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 2020-05-02
  • 2017-03-11
相关资源
最近更新 更多