数组指针和指针数组
2016-04-19 16:12
330 查看
数组指针
通俗的理解,就是指向数组的指针。其本质是一个指针。1.如:
int *p; int a[3][4]; p=a;
我们可以先声明一个指针,让他指向一个数组,则这个指针就是数组指针(该指针指向的地址可以改变)。另外,在这里,数组名本身也是一个数组指针,指向数组的首地址(而数组名指向的地址是常量,只能是数组的首地址)。
2.如:
int (*p)[4];
是指声明一个指向4个int元素的数组的一个针p.
指针数组
为了自己方便记忆,我是理解成为 存储指针的数组。其本质是一个数组。一个数组,若其元素均为指针类型数据,称为指针数组。 也就是说,指针数组中每一个元素都相当于一个指针变量,数组中每一个元素都是一个地址。
如:
int *p[4];
这里涉及到 * 与[]的优先级问题,只要我们记住[]比 * 优先级更高,就比较容易区分了。
由于[]的优先级更高,则p先与[4]结合,形成一个p[4]的数组形式,在与*结合,即表明这个数组都是指针类型的,每个数组元素都是一个指针。
总结
在我看来,关于数组指针与指针数组的区别,关键就在于 * 与[]的优先级问题上,有时会有括号(),当我们在声明是,注意观察变量名是先与 * 结合还是[]结合的。如果先与 * 结合,则说明是先声明成一个指针,再让这个指针指向一个数组,即为数组指针。如果先与[]结合,就说明是先声明一个数组,再把这个数组内的元素都声明成指针类型的,即指针数组。相关文章推荐
- 基于android的Socket通信
- 【dotnet跨平台】谈一谈dotnet-cli开源社区的产品持续集成
- iisexpress局域网内调试网站
- 亿方云面试经验(后台开发工程师实习)
- 省赛五1愤怒的小鸟积分求面积
- Anonymous function in C++
- SFTP 上传文件报错:SFTP ERROR?Algorithm negotiation fail
- 数据库连接池学习
- java面试基础知识(二)
- AML_uboot
- 使用内置的Camera应用程序捕获图像
- ERROR 1215 (HY000): Cannot add foreign key constraint 解决方法
- iOS开发Swift UITableView和UICollectionView的使用
- 蓝桥杯 交换瓶子
- OpenCV学习笔记之环境配置(VS2012+OpenCV3.1.0+SURF)
- java字节码指令列表
- 设置对话框dialog的样式
- Spring MVC @ResponseBody返回中文字符串乱码问题
- Oracle数据库备份脚本
- 安装oracle 11G-----( ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务)的解决方法