当前位置: 代码迷 >> C语言 >> 关于指针的问题
  详细解决方案

关于指针的问题

热度:268   发布时间:2007-01-06 15:17:51.0
关于指针的问题
问一个弱的问题。
现在想用双层指针指向二维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] 吧*/
}


----------------解决方案--------------------------------------------------------
以下是引用neverTheSame在2007-1-7 11:48:42的发言:

/*楼上的有一点问题吧*/
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]是数组中的一个元素,然后每一个元素再分配一维内存*/
}


----------------解决方案--------------------------------------------------------
我想请上楼编程实现一下,
是不是能够实现一个二维数组的申请!
----------------解决方案--------------------------------------------------------
厉害呀```

----------------解决方案--------------------------------------------------------
很不错 ,继续努力哦
----------------解决方案--------------------------------------------------------
  相关解决方案