遇到的问题
今天在写数据结构中的链表的时候遇到了一个错误。
编译器告诉的是:无效的参数类型“->”,因为存在整形变量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循环外部:
这个动态背景好帅啊
还不错哦