0

我有一个由我定义的数据类型,我想创建一个该数据类型的矩阵,但我无法使用它。

我有 typedef char data[10];

data  **matrix;
matrix=(data**)malloc(n*sizeof(data*));
for (i=0;i<x;++i)
    matrix[i]=(data*)malloc(m*sizeof(data));
matrix[i][j]="example";

但是在最后一行我得到一个错误说不兼容的类型,即使我使用相同类型的数据(在这种情况下来自动态向量)。创建或使用矩阵是否有错误?

4

2 回答 2

1

假设 estado 是 char 类型。

estado  **matrix = malloc(n*sizeof(char*));  //allocte number of pointers 

for (i=0;i<x;++i);       
matrix[i]=malloc(m); //allocate each pointer
matrix[i]="example";

假设 estado 是 int 类型。这与结构相同。

estado  **matrix = malloc(n*sizeof(int*)); //allocte number of pointers 

for (i=0;i<x;++i); 
{      
matrix[i]=malloc(m *sizeof(int)); //allocate each pointer

for(j=0;j<m;j++)  
matrix[i][j]=1;  or You can also use `memcpy()`  
}
于 2013-10-07T20:52:16.830 回答
1

这里

matrix[i][j]="example";

您分配给非法的数组。尝试这个:

strcpy( matrix[i][j], "example" );

请注意,这strcpy是不安全的,请为您的系统使用更安全的替代方案 -strlcpystrcpy_s. 或者你可以按照H2CO3的建议。

于 2013-10-07T21:11:58.470 回答