在嘗試自己學習C時,我遇到了這個我想開發的簡單程序。它只是試圖利用指針數組的指針來創建類似於矩陣的東西。我在Windows上編譯,當我運行它時,它只是崩潰,同時,在Linux上嘗試這個代碼它說segmentation fault
,這是因爲函數參數是數組?我在這裏做錯了什麼?瞭解指針數組的指針作爲函數的參數
#include <stdio.h>
#include <stdlib.h>
void initializeArray(float** array, int size);
void printArray(float** array, int size);
int main()
{
float** array_1 = NULL;
int array_size = 3;
initializeArray(array_1, array_size);
// Free memory from array
for (int i = 0; i < array_size; i++)
{
free(array_1[i]);
}
free(array_1);
return 0;
}
void initializeArray(float** array, int size)
{
array = malloc(size * sizeof(float*));
if (array)
{
for (int i = 0; i < size; i++)
{
array[i] = malloc(size * sizeof(float));
if (!array[i])
{
exit(0);
}
}
}
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
array[i][j] = 0;
}
}
}
void printArray(float** array, int size)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
printf("%f\t", array[i][j]);
}
printf("\n");
}
}
功能(並且是三星級的程序員不是恭維) –
是,三星級的程序員:你會避免這種情況。 –
@ Jean-FrançoisFabre啊,我明白了,沒有注意到,但在那之後,我應該如何在main()中調用函數?分配給'array_1'足夠了嗎? – lorenzattractor