我有幾個問題需要理解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