将值赋给函数C

时间:2015-07-24 21:12:17

标签: c pointers struct dynamic-memory-allocation

我有这个:

typedef struct{
int x;
int y;
}T;
void f(T** t)
{
    T t1;
    *t=malloc(sizeof(T)*T_MAX_SIZE);
    t1.x=11;
    t1.y=12;
    (*t)[0] = t1;
}

我希望这可以移动指针,而不是使用位置,我不确定在哪里或是什么问题,代码:

void f(T** t)
{
 T t1;
 T t2;
 T** copy=t;
 *t=malloc(sizeof(T)*T_MAX_SIZE);
 t1.x=11;
 t1.y=12;
 t2.x=21;
 t2.y=22;
 **copy=t1;
 copy++;
 **copy=t2;

}
int main()
{
 T* t;
 f(&t);
 printf("%i %i\n",t[0].x,t[1].x);
 free(t);
}

这是以下主题的继续 - > Copying Struct to a Pointer array in a function C

并且这不起作用:/

1 个答案:

答案 0 :(得分:1)

你的间接水平是错误的。它应该是:

void f(T** t)
{
    T t1;
    T t2;
    T* copy = *t = malloc(sizeof(T)*T_MAX_SIZE);
    t1.x=11;
    t1.y=12;
    t2.x=21;
    t2.y=22;
    *copy=t1;
    copy++;
    *copy=t2;    
}

您发布的代码正在推进到" next" T*只有一个元素的序列,即&tmain()所述的RXCollections。没有这样的" next"元素,因此您的代码调用未定义的行为。你很幸运,它没有完全崩溃。