现在想用双层指针指向二维double型数组,可能没有必要这样,但是请各位看看这样书写为什么TC指出是错误的。
/*定义两个指针,一个指向一个数组,这个数组就是一个二维的数组;然后用另外一个指针指向这个数组的每一行的第一个元素,我自己认为就是作为每一行的指针*/
doulbe * ipMatrix, *Matrix;
int i;
ipMatrix=(double *)malloc(Row * Col*sizeof(double));
Matrix=(double *)malloc(Row * sizeof(double));
for(i=0;i<Row;i++)
*(Matrix+i)=ipMatrix+i*Col;
……
但是在编译的时候提示有这样的错误"floating point error: domain"。
各位请告诉我这是什么缘故啊,我对指针理解的还很浅薄,可以的话强详细讲一下 。
谢谢各位先!
----------------解决方案--------------------------------------------------------
二维数组是一个指向指针类型的指针变量
比如:用指针定义一个[10][10]的二维数就是这样:
float **string=NULL;
int i;
string=(float **)malloc(10*sieof(float *));
for(i=0;i<10;i++)
string[i]=(float *)malloc(10*sizof(float));
[此贴子已经被作者于2007-1-6 16:41:55编辑过]
----------------解决方案--------------------------------------------------------
刚看到数组这一章,还没到指针,看来得抓紧看了。呵呵!
----------------解决方案--------------------------------------------------------
飘过~~~~~~~~~~~~~~~~~~~~
我得继续努力啊!
----------------解决方案--------------------------------------------------------
double **matrix
*matrix=(double **)malloc(ROW*sizeof(double)); //先分配一维
for (i=0;i<ROW;i++)
{
*matrix[i]=(double *)malloc(COL*sizeof(double)); //第一维中的每一个元素再分配一维内存
}
另外,如果不必要话,也不需要这样动态去分配
double matrix[ROW][COL]
这样matrix就是一个二级指针
----------------解决方案--------------------------------------------------------
/*楼上的有一点问题吧*/
double **matrix
*matrix=(double **)malloc(ROW*sizeof(double)); //先分配一维
/* (double **) 对应是应该是用 matrix 来接收,
而不是*matrix*/
for (i=0;i<ROW;i++)
{
*matrix[i]=(double *)malloc(COL*sizeof(double)); //第一维中的每一个元素再分配一维内存
/*matrix[i]已经是一个指针了,不要用 *matrix[i] 吧*/
}
----------------解决方案--------------------------------------------------------
/*楼上的有一点问题吧*/
double **matrix
*matrix=(double **)malloc(ROW*sizeof(double)); //先分配一维
/* (double **) 对应是应该是用 matrix 来接收,
而不是*matrix*/
for (i=0;i<ROW;i++)
{
*matrix[i]=(double *)malloc(COL*sizeof(double)); //第一维中的每一个元素再分配一维内存
/*matrix[i]已经是一个指针了,不要用 *matrix[i] 吧*/
}
更正一点错误,其他的没有错
double **matrix
*matrix=(double *)malloc(ROW*sizeof(double)); /*先分配一维,把(*matrix)看成是一个变量,比如可以看成是pMatrix,所以这个分配就相当于pMatrix=(double *)malloc(ROW*sizeof(double));,先分配一个一维数组*/
for (i=0;i<ROW;i++)
{
*matrix[i]=(double *)malloc(COL*sizeof(double)); /*同样可以把(*matrix)看成是一个变量,因为之前已经分配了一个一维数组,所以(*matrix)[r]是数组中的一个元素,然后每一个元素再分配一维内存*/
}
----------------解决方案--------------------------------------------------------
我想请上楼编程实现一下,
是不是能够实现一个二维数组的申请!
----------------解决方案--------------------------------------------------------
厉害呀```
----------------解决方案--------------------------------------------------------
很不错 ,继续努力哦
----------------解决方案--------------------------------------------------------