【发布时间】:2020-08-16 12:53:11
【问题描述】:
我有一个看起来像这样的结构:
struct persons_s
{
size_t count;
char names[MAX_PERSON_COUNT][MAX_PERSON_NAME_LENGTH];
};
当我尝试像这样分配值时,它不起作用:
struct persons_s persons;
persons.count = 2;
persons.names = { "test1", "test2" };
但这有效:
struct persons_s persons = { 2, { "test1", "test2" } };
我假设这与 names 数组保持不变有关,但我不确定。
所以我问:
- 第一种方法不起作用的确切原因是什么?
- 有没有更好的方法来实现这一点?
我也试过
char *names[MAX_PERSONS_COUNT];
但这也不起作用,因为我必须将它与strcpy(作为目标,strcpy(persons.names[i], source);)一起使用。
目前我正在做这样的分配(使用第一个结构):
struct persons_s persons;
persons.count = 2;
strcpy(persons.names[0], "test1");
strcpy(persons.names[1], "test2");
【问题讨论】:
-
这 doesn't work 因为
{...}的东西是为了初始化,而不是赋值,据我所知。所以variable = { 2, "whatever" };不正确,因为是赋值,而struct thing variable = {2, "whatever"};是初始化,所以没关系。
标签: c