二维数组和二维指针
来源:互联网 发布:日照城市知乎 编辑:程序博客网 时间:2024/04/30 15:49
Fun (int **p){}这里面的int **p //这里的p不是二维数组的指针,而是指向指针的指针,即二级指针。
正确的二维数组的指针应该是:Int a[2][2];Int (*p)[2];//定义时无论数组维数,只可忽略第一维
例如:int a[2][2]={0,1,2,3};
int **p=(int**)a;//强制将二维数组指针转为指向指针的指针
则此时p[0]=0;p[1]=1;p[2]=2;p[3]=3;
而p[0][0]=*(*(p+0)+0)=**p;
p[0][1]=*(*(p+0)+1);
对于p[0][0]:由于*p=0; ====> **p=*(0);引用地址为零的内存,必然是错误的。
对于p[0][1]=*(*p+1)====>*(4),引用了非法内存同样,
对于p[1][0]=*(1),p[1][1]=*(5),均引用了非法内存所以说,二位数组并不能简单的转换成指向指针的指针。
二维数组其实只是一个指针,而二级指针是指向指针的指针,所以二者并不等价。如上例所示:int a[2][2];
a是指向整个数组的首地址,并不是int **;所以不要指望向函数fun里面传实参 p=a;
0 0
- 二维数组和二维指针
- 二维数组和二维指针
- 二维数组和二维指针
- 二维指针和二维数组
- 二维数组和二维指针
- 二维指针和二维数组
- 二维数组和指针
- 二维数组和指针
- 二维数组和指针
- 指针和二维数组
- 二维数组和指针
- 指针和二维数组
- 指针和二维数组
- 二维数组和指针
- 二维数组和指针
- 二维数组和指针
- 二维数组和指针
- 指针和二维数组
- 21.高精度加法
- cart
- 对C#中Thread.IsBackground属性的理解
- RSA算法原理(一)
- 文件读写,归档,反归档
- 二维数组和二维指针
- Storm0.9.0.1升级安装
- gdb不停收到sigtrap信号
- 22.阶乘计算
- Unity3D 在一个GameObject旁边创建一个GameObject
- Scala编程
- 外行朋友值得一读的5本经典数学书
- 启动时不自动打开一个空文档
- 与非运算