C语言 数组返回值 问题~

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:30:14
我的函数不知道为什么总报错啊!说是'return' : 'int ' differs in levels of indirection from 'int *',declared formal parameter list different from definition和formal parameter 1 different from declaration

原型是 price[Nitems] = GetItemPrice(stockfile);int

GetItemPrice(int price[],FILE *file)
{
int i;
file=fopen("pricelist.txt","r");

if(file==NULL)
{
printf("\nError opening file: hello.txt");
}

else
{
for(i=0;i<10;i++)
{
fscanf(file,"%d",price[i]);
}
}
return(price);

我想把PRICE的整个数组的值返回~应该怎么做呀?我到底错在哪里呀?求教!

gaohu0926所言正确,我具体补充三点。

1、函数GetItemPrice声明为:
int GetItemPrice(int price[],FILE *file)
即返回值为int类型。而实际上,该函数返回price,此变量为int *类型,因此出现类型不匹配的错误信息:“ 'int ' differs in levels of indirection from 'int *'”。
2、如果需要获得楼主所说的“想把PRICE的整个数组的值返回”,那么在调用函数GetItemPrice时使用如下代码:
GetItemPrice(price, stokefile);
而不是price[Nitems] = GetItemPrice(stockfile);
并且在函数GetItemPrice中,返回0,而不是price。
3、函数GetItemPrice中尚存在一个小BUG:
fscanf(file,"%d",price[i]);
应该写为:
fscanf(file,"%d",&price[i]);

整个数组值得返回是不能直接依靠传值的,你可以使用指针,即直接返回数组名。但是切记,不能返回局部变量的值,否则有可能丢失。因为你的函数不全,我看不出具体的问题,你把程序给我吧。
因为你返回的是priece,是个数组,实际返回的是数组的指针。所以才会报错,说返回值类型不对。写成返回类型为int* 就可以了。