【发布时间】:2012-01-03 16:23:31
【问题描述】:
我在执行此操作时遇到了一些麻烦,并在互联网上搜索了 High 和 Low 寻求帮助,但无济于事。
我基本上是在尝试创建一个随机矩阵并将其打印出来,我有一个函数 double random() 可以工作并且已经过测试,并且我定义了一个结构如下:
typedef struct matrep {
unsigned rows, columns;
double *data;
} MATRIX;
我已经正确分配了内存,我使用这个和我的随机函数来创建一个随机矩阵,但结果是指针永远不会移动,
MATRIX *rand_matrix( MATRIX *mat )
{
for ( int i=0; i < mat->rows; i++ )
{
for ( int j=0; j < mat->columns; j++ )
{
*(mat->data) = random() ;
}
}
return mat ;
}
我知道它永远不会移动,因为当我使用此函数打印出矩阵时
void print_matrix(MATRIX *mat )
{
int i, j ;
if ( (mat->data)==0 || (mat->rows)==0 || (mat->columns)==0 )
{
printf("Empty matrix\n" );
return ;
}
printf( "\n\nMatrix of dimensions %d x %d\n\n", mat->rows, mat->columns) ;
for ( i=0; i < mat->rows; i++ )
{
for ( j=0; j < mat->columns; j++ )
{
printf("\t%1.2lf", *(mat->data) );
}
printf("\n") ;
}
}
并在上面的矩阵中用“j”交换随机数,它最终会打印出一个具有正确行数和列数的矩阵,但每个值都等于 j 的最大值。
基本上,我希望你能帮助我的是弄清楚如何增加我的*(mat->data) 指针。我听说当你调用箭头运算符时它会自动递增,但它似乎不起作用,当我尝试*(mat->data)++ 时,我得到了一个不错的大错误。
任何帮助都会非常感谢一百万。
【问题讨论】:
-
它不会自动递增。