我有几个问题需要理解u /使用c中的指针实现一些小的问题。 我有一个4x4矩阵,我想转置它。其实施已经开始。但知道我想要的,但方法的逻辑,使其更加花哨。C返回局部变量和4x4矩阵的错误预期参数
char arr[4][4] = { //filled }
printArray(arr)
第一代码部分只打印阵列我格式化它和它的工作完美。
char matrixTranspose(char array[4][4]) {
char new_array[4][4];
// logic
return new_array;
}
所以知道我要拿回置矩阵,但我总是又回到了警告:在我的主要方法
warning: function returns address of local variable [-Wreturn-local-addr]
warning: return makes integer from pointer without a cast [enabledby default]
进一步的步骤是只打印新阵像:
char new_matrix = matrixTranspose(arr);
printArray(new_matrix);
这导致给误差:
warning: passing argument 1 of 'printArray' makes pointer from integer
without a cast [enabled by default] note: expected 'char (*)[4]' but argument is of type 'char'
所以我的问题是,为什么它必须是一个指针,什么时候使用指针?我只是想整个变量来替换变量,将它转回并打印出来,我需要指出吗?谢谢你的帮助。
[返回从函数在C语言的局部变量(http://stackoverflow.com/问题/ 4824342 /返回本地变量从函数在c) –
在你的函数内,'char new_array [4] [4];'在栈上声明一个数组。只要函数返回,这些数据就会丢失。我建议你使用'malloc()'在堆上创建一个数组,并返回一个指向它的指针。 –
该功能是无稽之谈。编程时,你实际上必须知道你在做什么。你不能仅仅通过试验和错误来猜测。如何阅读关于C书中数组和指针的章节呢?我相信会有例子。 – Lundin