0
我想創建一個結構,將有兩個整數值,一個數組和兩個2-D矩陣使用我的代碼如下。我可以使用整數和數組初始化結構,我的'Gen'函數將創建我想要的數組的隨機值。在一個結構中創建一個矩陣
但是,當我嘗試添加矩陣組件時,遇到了問題。我的編譯器給我一個警告:「從不兼容的指針類型初始化」。如果我理解到目前爲止我讀到的內容,這是因爲該結構需要指向表示矩陣中每一行的指針數組。我不知道那個語法。
快速提示:我看到的與此問題相關的其他主題都在main()函數以外的函數中初始化結構,所以我沒有發現這些解決方案很有用。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <string.h>
// Define structure
typedef struct {
int row;
int col;
int *arr;
int **mat1;
int **mat2;
}container;
// Function headers
void Gen(container Thing);
int main() {
int row = 5;
int col = 6;
int A[row];
int M1[row][col];
int M2[row][col+1];
// Initialize structure
container Object = {row, col, A, M1, M2};
// Run "Gen" function
Gen(Object);
int i, j; // Index variables
// Display the array
for(i = 0; i < row; i++)
{
printf("%i ", Object.arr[i]);
}
printf("\n\n");
// Display the numbers from the matrices
for(j = 0; j < Object.row; j++)
{
for(i = 0; i < Object.col; i++)
{
printf("%i ", Object.mat1[j][i]);
}
printf("\n");
}
printf("\n");
for(j = 0; j < Object.row; j++)
{
for(i = 0; i < Object.col; i++)
{
printf("%i ", Object.mat2[j][i]);
}
printf("\n");
}
return (EXIT_SUCCESS);
}
// Function to generate random values in the array & matrices
void Gen(container Thing)
{
int i, j;
srand(time(NULL));
// Generate random values for the array
for(i = 0; i < Thing.row; i++)
{
Thing.arr[i] = rand() % 5;
}
// Generate random values for the matrix
for(j = 0; j < Thing.row; j++)
{
for(i = 0; i < Thing.col; i++)
{
Thing.mat1[j][i] = rand() % 5;
Thing.mat2[j][i] = rand() % 5;
}
}
} // End of "Gen" function
有很多的問題上,以便與該錯誤:http://stackoverflow.com/search?q=initialization+from+incompatible+pointer+type –
沒有數組在你的'struct'中,只有指針。指針與數組不一樣,反之亦然。 – Olaf