我定义了一个新的typedef如下:
typedef struct matrep
{
int rows, columns; /*rows/columns represent the number of rows/columns in the matrix, data represents matrix entries.*/
double *data;
}
MATRIX;
现在,我要做的是使用函数 gen_matrix 用随机双精度值填充这个结构。gen_matrix 接受一个指向 MATRIX 结构的指针并返回它。
但是,当我在下面执行我的程序时出现运行时错误。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct matrep
{
int rows, columns; //rows and columns represent the number of columns in the matrix, data represents matrix entries.//
double *data;
}
MATRIX;
double random();
MATRIX *gen_matrix(MATRIX *ptr);
int main()
{
MATRIX *somepointer;
somepointer -> rows = 2; //The program crashes when I try to execute this.//
somepointer -> columns = 2;
}
double random()
{
double f = (double)rand() / RAND_MAX; //Generating a random number between -100 and 100//
return (-100 + f*(200));
}
MATRIX *gen_matrix(MATRIX *ptr)
{
int i, j;
int m, n;
MATRIX *newdata;
m = ptr -> rows;
n = ptr -> columns;
newdata = (MATRIX *)malloc(sizeof(double)*(m*n)); //Allocating suitable space.//
ptr = newdata;
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
*(ptr -> data)= random(); //Setting the value of each and every matrix entry to a random double.//
(ptr -> data)++;
}
}
return ptr;
}
我认为有两个问题: 1:由于某种原因,在 main() 中设置“行”和“列”的值是错误的。2:我的 gen_matrix 函数也可能有问题。
所以我的问题是,我将如何纠正这两个问题?(注意:我的 random() 函数绝对没问题)。