顺序表里面’ListInsert_Sq’ : cannot convert parameter 3 fro

C语言 码拜 8年前 (2016-01-29) 627次浏览
报错了,不知道问题在哪里。新手,不怎么理解指针呢。求高手指点
谢谢各位哥哥姐姐
本人刚学数据结构,正在第一步的顺序表
这个是照抄网上的代码
但是还是出了错
求帮忙
“”ListInsert_Sq”” : cannot convert parameter 3 from “”int”” to “”int *””
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

Status ListInsert_Sq(SqList *L,int i ,ElemType e)
{
	if(i < 1 || i > L->length+1)
		return ERROR;
	if(L->length == L->listsize)
	{
		ElemType * newbase = (ElemType *)realloc(L->elem,(L->listsize + LISTINCREMENT) * sizeof(ElemType));
		if(! newbase)
			exit(OVERFLOW);
		L->elem = newbase;
		L->listsize += LISTINCREMENT;
	}
	ElemType *q = &(L->elem[i - 1]);
	ElemType *p;
	for(p = &(L->elem[L->length - 1]); p >= q;p--)
	{
		*(p + 1) = *p;
	}
	*q = e;
	L->length++;
	return OK;
}
int main()
{
	SqList L;
	ElemType e;
                   int  i;
	for(i = 0;i < 5;i++)
	{
		ListInsert_Sq(&L, i , i);
	}
	
}
解决方案:30分
调用 ListInsert_Sq(&L, i , i);时,其函数定义为
Status ListInsert_Sq(SqList *L,int i ,ElemType e)
而i的定义在代码中为 int ,  与原函数定义 ElemType 不一致
解决方案:10分
不太清楚编译器能否本人会对深层次的数据类型进行检查,不过看报错信息,目测不会。
从规避我们不了解的深层次的部分、还是维护代码的可读性,建议还是在第一层传入参数时,其数据类型与函数定义时一致。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明顺序表里面’ListInsert_Sq’ : cannot convert parameter 3 fro
喜欢 (0)
[1034331897@qq.com]
分享 (0)