【发布时间】:2014-05-31 18:39:41
【问题描述】:
在掌握 C 中的数组以及如何通过函数返回它们时遇到了一些麻烦。如果我做这样的事情
int main()
{
int num_set[10]={0,1}; //initialize first two elements as 0,1 and rest as 0
int* p=num_set; //assign array to int pointer called p
printf("\n%i",&num_set); //outputs 2686660 on my machine
printf("\n%i",&num_set[0]); //also outputs 2686660
printf("\n%i",p); //also outputs 2686660
printf("\n%i",p[1]);* //outputs 0; the same as num_set[1]
}
它按预期工作,但是当我尝试通过另一个函数返回一个数组时,如下所示
int multiply_by_2(int given_number)
{
int num_set[10];
for(int fun_counter=0; fun_counter<10; fun_counter++)
{
num_set[fun_counter] = (given_number*2) ;
}
return num_set; //return int array num_set to caller
}
int main()
{
int* p = multiply_by_2(300) //assign array returned by function to p
for(int main_counter=0; main_counter>10; main_counter++)
{
printf("\np[%i] = %i"
, i, p[i]);
}
}
我收到一条错误消息,提示“从 'int' 到 'int*' 的转换无效”
当我在第一个代码中将数组分配给 int 指针时,它们没有错误,但是当我尝试通过函数返回它时出现此错误。
请帮忙。
【问题讨论】:
-
您已声明
multiply_by_2返回int,但您正尝试返回int[10]。 -
@Andro47 现在为什么不能编译?
-
不能在 C 中返回数组。
-
至于你的问题,Oli 解释了为什么它不能编译,但我真的不明白你想要做什么。