引用指针错误

0 c

typedef struct car car_t;
struct Car {
   int carID[QUEUE_SIZE];
   int f[QUEUE_SIZE];
};
int main (){
 int Array[ARRIVAL_QUEUE_SIZE];
 car_t *ddd = (car_t*)malloc(sizeof(car_t));
   for(int i =0; i<2; i++){
        int carid = ((CARID_NUMBER_MIN)+(int)((double)(NUMBER_MAX-NUMBER_MIN+1)*rand()/(RAND_MAX+1.0)));    
 Array[i] = carid;
 ddd-> carID[i] = Array[i];
 ddd-> f[i] = Array[i];
   }

}
Run Code Online (Sandbox Code Playgroud)

它抱怨解除指向不完整类型的指针并将'sizeof'无效应用于不完整类型'car_t'

pax*_*blo 5

嗯,这是因为car_tstruct car一个不完整的类型.

你确定你不是故意的struct Car(大写'C')?

sizeof(car_t)不会在被称为malloc呼叫,因为你没有指定什么是真正的内部是结构.

ISO C标准(C99,6.2.5)将不完整类型定义为"描述对象但缺少确定其大小所需信息的类型".这正是你在这种情况下所拥有的.