为什么会有这种不能内存读 的错误呀,我已遇到好几次了,好多次是感到莫名其妙的,请高手指教
#include<iostream.h>
void fn(int **p,int,int);
void main()
{
int p=1;int j;
static int a[2][3];
for(int i=0;i<2;i++)
for( j=0;j<3;j++)
a[i][j]=p++;
fn((int **)&a[0][0],i,j);
}
void fn(int **p,int ii,int jj)
{
for(int i=0;i<ii;i++)
for(int j=0;j<jj;j++)
cout<<" "<<p[i][j];
cout<<endl;
}
为什么,我认为没有错误呀,已 通过编译和链接了呀,
问题点数:0、回复次数:3Top
1 楼loyyer(我爱C++)回复于 2003-08-01 20:37:55 得分 0
为什么你不给分呢?
这明摆着是打击大家的积极性啊!~!@#$Top
2 楼hustwf(大飞)回复于 2003-08-01 21:54:06 得分 0
告诉你好了。
int a[m][n]并不表示a是一个二级指针,用二级指针是不行的。Top
3 楼direstrait(明天不是猪)回复于 2003-08-02 02:28:47 得分 0
大飞说的很有道理.
可以看看下面这个例子:
int *p1=6;
int **p2=p1;
说明了2及指针并不能用来代替2维数组,大家平时有一种这样的概念是因为
char *p1="hello";
char **p2=p1;
是因为字符数组和字符串在某种程度上有些相似之处,但是其实是不一样的,所以更加不能套用到int里面来.
真可惜,居然没有分,哎,可怜我初来乍到.Top




