【发布时间】:2013-11-08 21:22:03
【问题描述】:
我在退货行中遇到错误。 “从结果类型为'int'的函数返回'int (*)[2]'的整数转换指针不兼容”有人可以解释这个错误背后的理论是什么以及如何解决它吗?我仍然得到正确的结果,但不知道这个错误。 (提示:我是初学者) 这是我的测试代码。
#include <stdio.h>
#include<string.h>
/* two diminsanl array testing*/
int array_function(int phase,int array[][2]);
int main()
{
int phase =1;
int array[][2]={};
array_function(phase, array);
phase =2;
array_function(phase, array);
return 0;
}
int array_function(int phase, int array[][2])
{
if(phase==1)
{
array[0][0]=1;
array[0][1]=2;
array[1][0]=3;
array[1][1]=4;
}
if(phase==2)
{
printf("%d\n",array[0][0]);
}
return array; //<------------- error line
}
【问题讨论】:
-
在 c/c++ 中,函数不返回数组。在 c++ 中,您应该返回一个向量。另外,在 c/c++ 中,数组是通过引用传递的,所以函数正在修改原始数组。
-
一个数组是通过指向数组的指针的值传递的,这是对数组的引用,因此正如@CroCo所说,它修改了原始(通过)数组。