0
嗨,这里是我的代码。我想dynamincly变化没有在表结构elemnts的__state:C结构表动态内存分配
typedef struct __state{
long int timestamp;
int val;
int prev_value;
}*state_p, state_t;
int main(int argc, char **argv){
int zm;
int previous_state = 0;
int state = 0;
int i = 0;
int j;
state_p st;
//here i want to have 20 structs st.
st = (state_p) malloc(sizeof(state_t) * 20);
while(1){
previous_state = state;
scanf("%d", &state);
printf("%d, %d\n", state, previous_state);
if (previous_state != state){
printf("state changed %d %d\n", previous_state, state);
// here i got compile error:
main.c: In function ‘main’:
main.c:30: error: incompatible type for argument 1 of ‘save_state’
main.c:34: error: invalid type argument of ‘->’
main.c:34: error: invalid type argument of ‘->’
save_state(st[i],previous_state, state);
}
i++;
}
return 0;
}
我想我必须要改变的是st[i]
到SMTH像st+ptr
?指针在每个循环迭代中占据什么位置?或者我错了?当我更改代码:初始化为state_p st[20]
,并在每个循环迭代中,我把st[i] = (state_p)malloc(sizeof(state_t))
一切工作正常,但我想动态地更改该表中的元素数。
提前THX任何帮助
什么是函数原型了save_state()? – 2010-05-27 15:25:11
虽然它与你的问题没有关系,但你应该认识到'__state'这个名字是为实现保留的,所以你不应该使用它。 – 2010-05-27 15:38:33
这里是: (对不起,我不知道如何把'代码标记'在这里) void save_state(state_p st,int previous_state,int state){ st-> timestamp = 0; st-> prev_value = previous_state; st-> val = state; } – JosiP 2010-05-27 15:44:01