C返回4x4矩阵的局部变量和错误的预期参数

时间:2016-11-09 12:17:33

标签: c arrays pointers char

我有一些问题要理解U /用c中的指针实现一些小的东西。 我有一个4x4矩阵,我想转置它。它的实施已经开始。但我知道我想把它的逻辑变成方法,使它更加花哨。

char arr[4][4] = { //filled } 
printArray(arr)

第一个代码部分只在我格式化时才打印数组,并且工作完美。

char matrixTranspose(char array[4][4]) {

  char new_array[4][4];

  // logic

  return new_array;
}

所以我知道我想找回转置矩阵,但我总是收回警告:

  

警告:函数返回局部变量的地址   [-Wreturn本地-ADDR]

     

警告:返回从指针生成整数而没有强制转换[enabledby   默认]

我的main方法的其他步骤是打印新数组,如:

char new_matrix = matrixTranspose(arr);
printArray(new_matrix);

导致错误:

  

警告:传递' printArray'的参数1从整数

生成指针      

没有演员[默认启用]注意:预期' char(*)[4]'但   参数的类型为' char'

所以我的问题是,为什么它必须是一个指针,我什么时候使用指针?我想在整个过程中覆盖变量,转置它然后将它打印出来并打印它,我需要指点吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

函数不应返回在其中声明的非静态数组。

将您的主要代码更改为:

char arr1[4][4] = {...};
char arr2[4][4];

matrixTranspose(arr1,arr2);
printArray(arr1);
printArray(arr2);

你的职能是:

void matrixTranspose(const char input_arr[4][4],char output_arr[4][4])
{
    // logic
}