好吧,这可能很简单,但我查看了指针,数组和内存分配的所有网站,但对我来说,一些解释有点太复杂。所以...有人可以向我解释为什么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”具有用于数组索引0-499的值1-500,和字符串字段“ sval'包含数组索引0-499的字符串“$ 1” - “$ 500”。在函数调用中。
也:是
d = new data_t[500]
所有我需要对结构的500元件阵列分配内存?
只是想弄清楚为什么它在工作在主循环中,而不是在函数调用...看指针的东西的方式指向错误调试器...
真棒这是完全问题... 现在我将如何去改变诠释我到sval?这是错误的,但一个例子 sval =('$'+ char(i + 1)+'\ 0'); – Sun 2012-04-10 05:28:36
@Sun:将'char *'改为'std :: string'。 – 2012-04-10 05:31:06
是的我知道这将工作,但这实际上是一个面试测试...需求和whatnot 我100%确定他们希望我使用malloc()因为它的提到... – Sun 2012-04-10 05:38:15