作者chicago2003 (天线无双)
看板C_and_CPP
标题[问题] 不会用Memory allocation和指标
时间Mon May 11 22:29:47 2009
各位大大好
小弟我是C语言新手
一直搞不懂pointer &pointer's pointer
请问一下喔
int size, i; double **m, *iptr;
size = nr * nc;
m = ( double ** ) malloc ( nr * sizeof ( double * ) );
if ( m == NULL )
{ printf ("\nerror 1\n"); exit ( 0 ); }
iptr = ( double * ) malloc ( size * sizeof ( double ) );
if ( iptr == NULL )
{ printf ("\nerror 2\n"); exit ( 0 ); }
for ( i = 0; i < nr; i++ ) { m [i] = iptr; iptr += nc; }
return m;
以上是我要安排一个A[i][j]矩阵
所需要的公式
可不可以请问一下
1.(double **)是什麽意思?
我前面用的是grade 为什麽後面要加(double **)
不是**grade 才需要指到指标的指标的记忆位置??
2.不是grade->*grade(*iptr)->**grade???
为什麽先在grade 安排nr个double *
而在iptr安排size个double
3.照指标的指向位置
不是应该是grade要指向nr个(double*) *iptr指向nc个(double**)吗
所以grade应该才要有nr*nc个记忆位置吗?
不应该是这样吗→
int size, i; double **m, *iptr;
size = nr * nc;
**m = ( double ** ) malloc ( size * sizeof ( double * ) );
if ( m == NULL )
{ printf ("\nerror 1\n"); exit ( 0 ); }
*iptr = ( double * ) malloc ( nc * sizeof ( double ) );
if ( iptr == NULL )
{ printf ("\nerror 2\n"); exit ( 0 ); }
for ( i = 0; i < nr; i++ ) { m [i] = iptr; iptr += nc; }
return m;
各位大大
帮帮小弟吧
我真的不懂>"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.7.59
1F:推 snowlike:1.type casting 2.3.nr要绑住的是size个大小,换句话说; 05/12 02:17
2F:→ snowlike:有nr条绳子,每条绳子要持有nc个物品,势必准备nr*nc个 05/12 02:17