如果是在main中动态获得数组的值,那么,最好在main里面创建数组,然后把数组传给fun进行修改,等fun返回以后,main获得的就是修改后的数组了。
void func(char array[1000][4])
{
array[5][2] = 100;
}
main()
{
char arr[1000][4];
fun(arr);
}
arr是在运行栈上的,fun()执行完毕返回时,栈上的东西就都释放掉了。
所以要想返回二维数组,只能用malloc在堆上分配内存。
当然,调用fun()的函数要负责free释放内存。
#include
////////////////////////////////////
//输入参数: i,j数组的下标
//输出:指定下标数组的值
////////////////////////////////////
char * fun(int i,int j)
{
char *arr[1000][4];
arr[0][0] ="wang";arr[0][1] ="hongw"; //你初始化一些数据
char *tmp;
tmp = arr[i][j] ;
return tmp;
}
int main(void)
{
char *value;
value = fun(0,0);
printf("%s", value );
getchar();
return 0;
}
把fun()中的数组arr动态分配,然后返回其地址。main用完后释放空间。