浅谈 二维数组、指针数组、数组指针、二级指针的区别
来源:互联网 发布:30周b超数据判别男女 编辑:程序博客网 时间:2024/06/05 18:05
声明:6行5列
二维数组:char ary[6][5];///内存大小 6*(5*sizeof(char));
指针数组:char *ary[6];//(char *) ary[5],内存大小 6*sizeof(char *)
数组指针:char (*ary)[5];///内存大小(sizeof(char* [])) 大小为一个指针的大小
二级指针:char **ary;///sizeof(char **)
内存布局:
ary[i][j]取下标,上述4中变量在c中的代码一样:*(*(ary + i) + j)
但其内部寻址方式是不同的
1、二维数组: *(*(ary + i * 5 * sizeof(char)) + j * sizeof(char))
2、指针数组: *(*(ary + i * sizeof(char *)) + j * sizeof(char))
3、数组指针的本质是一个指向数组的指针,然而此处我们让它指向了
ary[0]的位置,由于二维数组(此处不能是动态分配内存)在内存中的
布局是连续的,所以我们可以可以通过数组指针访问二维数组,其实这
早已超出了它本身的范围,如果二维数组是动态分配的,那么下面的
取值方式是不合理的
数组指针: *(*(ary + i * 5 * sizeof(char)) + j * sizeof(char))
4、二级指针: *(*(ary + i * sizeof(char *)) + j * sizeof(char)
附注:
上述中的二维数组都是指char ary[][]这样的形式的,动态分配的二维数组是要
靠指针数组实现
0 0
- 浅谈 二维数组、指针数组、数组指针、二级指针的区别
- 指针数组,数组指针,二级指针,二维数组的关系
- 二级指针二维数组
- 二维数组 指针数组 数组指针 二级指针
- 二级指针与二维数组
- 二维数组和二级指针
- 二维数组与二级指针
- 二级指针和二维数组
- 二维数组与二级指针
- 二维数组与二级指针
- 二级指针与二维数组
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组与二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组与二级指针
- c语言声明 void (*signal(int sig, void(*func)(int)))(int)
- 如何学习一门编程语言
- virtual与abstract的区别
- 如何对PHP文件进行加密——ZendGuard加密与ZendLoader解密
- DataInputStream和DataOutputStream的简单使用
- 浅谈 二维数组、指针数组、数组指针、二级指针的区别
- HBase 1.1.2 split 策略
- cocos2dx 3.x 事件分发机制
- Android Studio 1.01 + BlueStacks 开发调
- 解决项目莫名奇妙的报错问题
- 国内主流Hybrid app工具平台推荐
- 作为一名非Commiter,如何向开源社区提交自己的代码
- 未来的一个目标------------------------2015年11月1日
- 利用分支预测优化代码