【发布时间】:2012-04-10 05:13:23
【问题描述】:
好的,这可能真的很简单,但是我查看了有关指针、数组和内存分配的整个网站,但有些解释对我来说有点太复杂了。那么......有人可以向我解释为什么 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 循环中有效,但在函数调用中无效...查看调试器,指针指向错误的地方...
【问题讨论】:
标签: c++ arrays pointers struct