与 C 指针相关的混淆错误:表观调用的括号前面的表达式必须具有(指向)函数类型

问题描述 投票:0回答:1

我是C语言数据结构的初学者,这是我在学习顺序队列时遇到的情况:

typedef struct {
    int NO;
    int ST; //starttime
} CAR; //car struct    

typedef struct {
    CAR* sqqbase; // sqqueue's base
    int front;
    int rear;
} SQQ; // sequential queue

int InitQueue(SQQ *sqq)
{
    (*sqq).sqqbase = (CAR*)malloc(SQQMAXSIZE*sizeof(CAR))
    (*sqq).frint = (*sqq).rear=0;
    return 0;
}

我认为所有变量的类型应该是正确的,但在第三张图片的第73行,它警告“表观调用的括号前面的表达式必须具有(指向)函数类型”。现在我不知道如何解决这个错误,你能给我一些建议吗?

c pointers
1个回答
0
投票

看起来代码似乎不知道

malloc
是一个函数。请注意,在 C 语言中,除非您告诉编译器,否则编译器不会知道任何函数;这也适用于 C 标准 API 的所有函数。通常,这是通过在头文件中声明函数,然后将头文件包含在您希望函数已知的位置来完成的。例如。编译器不会知道名为
malloc
的函数存在,除非您将
<stdlib.h>
包含到源文件中,因为这就是声明
malloc
的地方。

© www.soinside.com 2019 - 2024. All rights reserved.