【发布时间】:2021-10-13 22:43:39
【问题描述】:
我试图创建一个结构数组并初始化结构数组成员,但我不知道如何访问结构成员,我使用了(st->ch)[t] = 'c'; 和其他类似的语法但我没有成功。
最好的问候。
struct ST
{
char ch;
};
bool init(ST* st, int num)
{
st = (ST*)malloc(num * sizeof(ST));
if (st == NULL) return false;
for (int t = 0; t < num; t++) (st->ch)[t] = 'c';
return true;
}
int main()
{
ST* s = NULL;
init(s, 2);
putchar(s[1].ch);
}
【问题讨论】:
-
st[t].ch = 'c';但这只能修复语法错误。还是有很大的逻辑错误。st是函数中的局部变量。更改它不会更改调用者的s变量 - 它仍然是NULL。请参阅:Changing address contained by pointer using function。
标签: c struct pass-by-reference dynamic-memory-allocation member-access