要递增指向数组的指针,请执行*(p+i)
或*(p++)
,但是如何递增链接列表中的指针?
我有这个结构:
typedef struct list carPilot, *pCarPilot;
struct list{
pilot pilot;
car car;
int *time;
pCarPilot prox;
};
struct race {
int laps;
int size;
int n_cars;
};
/* ------------------ */
int times[race.cars][race.laps];
pCarPilot list = NULL;
for(j = 0; j < race.laps; j++) {
times[i][j] = calculaSegundos(idade,peso,exp,potencia,caract.comprimento);
*(list->time+ j) = times[i][j]; // my error is HERE
}
我试图做*(list->time + i)
和*(list->time ++)
,但是当我运行代码时,程序就停止了。
答案 0 :(得分:1)
鉴于您的结构可能是作为多个malloc调用创建的,因此它们很可能分布在整个内存中。
想象一个数组的内存。这样布置:
p
-----------
|0|1|2|3|4|
-----------
因此您可以致电*(p + 3)
来访问附近的值
对于动态分配的结构,最有可能是
p
---------------------------
|0|other thing|1|a|2|etc..|
---------------------------
因此*(p + 2)
位于other thing
内部,这不是您所期望的。
解决方法是,链表内部有一个指针。因此,例如list->prox
应该是下一个实例。无需直接触摸指针。
旁注,您的carPilot本身就是一种类型;因此,您不应在其之前添加int。