【发布时间】:2013-12-22 16:38:21
【问题描述】:
这是我的代码:
int *myFunction()
{
int A[3] = {1,2,3};
return A; //this will return the pointer to the first element in the array A
}
int main (void)
{
int A[3];
A = myfunction(); //A gets the return value of myFunction
for(int j=0; j==2; j++)
{
B[j] = 2* A[j]; //doubles each value in the array
}
printf("%d",B);
return 0;
}
但这不起作用,因为返回的 A 不是实际的向量。如何在主函数中获取实际的向量 {1,2,3}?
【问题讨论】:
-
您不能这样做,因为
A是myFunction的本地对象,当myFunction结束时它将超出范围,从而使main具有无效的指针。 (另外你没有在main中声明A。) -
尝试返回A的地址
&A,然后在方法外使用。 -
还要注意你的
for循环永远不会运行,因为j == 2在第一次迭代时是假的。您的意思可能是j != 2,尽管j < 3会更好(也更常见)。
标签: c arrays function pointers return