我有一些问题要理解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'
所以我的问题是,为什么它必须是一个指针,我什么时候使用指针?我想在整个过程中覆盖变量,转置它然后将它打印出来并打印它,我需要指点吗?谢谢你的帮助。
答案 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
}