数组指针定义的理解
2016-04-04 11:18
190 查看
定义一个数组
int a[4]={0,1,2,3};
再定义一个数组指针<pre name="code" class="cpp">int (*p)[4]=&a;这里使用&a,而不使用a,是因为数组是c内嵌数据类型,它代表整个数组,而a仅代表数组首元素地址,虽然printf打印出地址是相同的,但含义不同。
这里定义需要两个表达式数据类型对应,数组指针应该指向整个数组,同理,定义int *p,就应该使p=a了。
延伸一下,怎么用一个一维的数组指针访问二维数组呢?
定义一个二维数组
int b[2][2]={0,1,2,3}
int (*q)[2]=b;
这里用b,而不用&b,也是数据类型对应的需要,首先二维数组可以看做若干行一位数组,而b则代表了首行一位数组,&b则代表整个二维数组,但是我们的
数组指针只是一维的,所以用b,如果用printf打印b+1和&b+1可以看到b+1跨过的是一行一维数组所占字节,而&b+1则跨过整个二维数组所占字节,q+1与
b+1相同。
综上,定义指针时要遵循数据类型匹配。(个人理解,可能有误)
相关文章推荐
- css3中的变形(transform)、过渡(transtion)、动画(animation)
- JsonObject 简介
- Exchange 2010和Exchange 2016共存部署-3:Exchange2016部署系统要求
- Innodb MVCC的实现分析
- ubuntu14.04 软件卸载
- ubuntu下samba服务器的安装与配置
- CentOS6.5安装卸载MySql
- BroadcastReceiver(接收广播)
- 2016微软开发者大会 - 简洁收集
- 【BZOJ3302】[Shoi2005]树的双中心【DFS】【TreeDP】
- 1051. 复数乘法 (15)
- 重载重写区别
- windows下安装python出现2503错误的解决办法
- Learning Gulp
- 机器学习实战之adaboost
- 构建之法阅读笔记04
- eclipseGUI的可视化开发工具插件
- HDOJ-1536 S-Nim
- 1010. 一元多项式求导 (25)——做题纪录
- 【poj2728】Desert King