好吧,這可能很簡單,但我查看了指針,數組和內存分配的所有網站,但對我來說,一些解釋有點太複雜。所以...有人可以向我解釋爲什麼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