好吧,这可能真的很简单,但是我查看了有关指针、数组和内存分配的整个网站,但有些解释对我来说有点太复杂了。那么......有人可以向我解释为什么 d[i] 在下面的代码中指向不同的东西吗?
typedef struct data_t {
int ival;
char *sval;
} data_t;
void f1(data_t **d);
int main()
{
data_t *d;
d = new data_t[500];
for (int i=0; i<500; i++)
{
d[i].ival= i+1;
d[i].sval="$";
}
f1(&d);
}
void f1(data_t **d)
{
for (int i=0; i<500; i++)
{
d[i]->ival=i+1;
d[i]->sval="$";
}
}
虽然我需要做的是填充数组的 500 个元素中的每一个,以便整数字段“ival”的值 1-500 用于数组索引 0-499,而字符串字段“sval”包含字符串“$1 ” – 数组索引 0-499 的“$500”。在函数调用中。
也是
d = new data_t[500]
我只需要为 500 个元素的结构数组分配内存吗?
只是想弄清楚为什么它在 main 的 for 循环中起作用,但在函数调用中不起作用……查看调试器,指针指向错误的地方……