【发布时间】:2015-02-14 17:50:05
【问题描述】:
我有这个功能:
HOTEL* delh(HOTEL *h , int *n, int k)
{
int i;
HOTEL *p;
for(i=k; i<*n-1; i++)
{
h[i]= h[i+1];
}
p = (HOTEL *)realloc(h, (*n-1)*sizeof(*p) );
if (p==NULL)
{
return p;
}
*n = *n - 1;
return p;
}
Hotel 是一个结构体。当我在 main 中调用此函数时出现错误:从 'int' 到 'int*' 的无效转换 |和错误:初始化 'HOTEL* delh(HOTEL*, int*, int)'| 的参数 2。我是这样做的:
case 13:
printf("Enter position: ");
scanf("%d", &k);
p = delh(h, n, k); //here is the error
if (p == NULL)
{
puts("memory was not reallocated");
}
else
{
h = p;
}
getch( );
break;
在此之前,我创建了一个结构变量数组。
【问题讨论】:
-
编译器显然无法读取你的代码,因为缩进太可怕了。
-
在前面看起来 n 是
int n;而你需要传递的是delh(h, &n, k); -
initializing argument 2..似乎很明显。你能交叉检查一下吗?