error: invalid type argument of ‘->’ (have ‘int’) 解决方法

遇到的问题

今天在写数据结构中的链表的时候遇到了一个错误。

编译器告诉的是:无效的参数类型“->”,因为存在整形变量int。

笔者Google了,也百度了好久。普遍告诉我是“->”的问题,说“->”两边的数据类型不匹配。

emm,大概意思就是:如果你用的是“->”,那么你左边的变量必须是指针变量。如果左边是普通的变量,那你要用“.”才对。

但笔者这个代码不是这个问题,在第101和102行明显的,p和q都是指针变量。不是普通地址。所以用“->”是没有问题的。

观察第105行:

for (int i = 0, p = pHead->pNext; i<length_list(pHead)-1; i++, p = p->pNext)

其中:

int i = 0, p = pHead->pNext

把这句话单独择出来来看

变量i显然是int类型;p是指针变量,在该程序中是struct Node*类型(或者说是指针变量类型)。

那我问你这句话对吗:

double j;       //相当于第101行
int i, j;       //相当于第105行

显然,会报错。因为j前面已经声明了是double类型,后面怎么可能变成int类型呢?

解决方案

将变量i和j的声明提出来,写在for循环外部:

作者: 高志远

高志远,23岁,男生,毕业于上海杉达学院电子商务系。

《error: invalid type argument of ‘->’ (have ‘int’) 解决方法》有2条评论

发表评论

邮箱地址不会被公开。