数组指针与指针数组
2016-04-27 12:24
344 查看
这两个概念有点混淆,但我们可以从本质上去理解他们。
数组指针。
它的本质是指针。下面看一个定义:
int (*p)[5];
意思为,定义一个指针p,必须使它指向一个大小为5,数据类型为int 的数组。p中存放的为数组的首地址。
![](http://img.blog.csdn.net/20160427120137860?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
有两个要点:
1、
当我们定义一个数组指针指向一个数组的时候,类型,大小一定要相对应。不然会出错。
2、
一定要指向整个数组的地址,而不是数组的首地址。
读函数:
指针数组。
它的本质是一个数组,定义:int *p1[5];
意思为,创建一个大小为5数组,数组的元素为指针(int*)。这些指针又可以指向相应类型的对象。
数组指针。
它的本质是指针。下面看一个定义:
int (*p)[5];
意思为,定义一个指针p,必须使它指向一个大小为5,数据类型为int 的数组。p中存放的为数组的首地址。
有两个要点:
1、
当我们定义一个数组指针指向一个数组的时候,类型,大小一定要相对应。不然会出错。
2、
一定要指向整个数组的地址,而不是数组的首地址。
读函数:
<span style="font-size:14px;">int main() { char a[5] = { 'A' , 'B', 'C', 'D' }; char(*p1)[5] = &a; char(*p2)[5] = a;// 错误,原因:指向的是数组首地址。 char (*p3)[4]=&a;//错误,原因:大小不同。 int (*p4)[5]=&a;//错误,原因:类型不同。 return 0; } </span>
指针数组。
它的本质是一个数组,定义:int *p1[5];
意思为,创建一个大小为5数组,数组的元素为指针(int*)。这些指针又可以指向相应类型的对象。
相关文章推荐
- 什么是IOC
- Spring注入
- maven scope含义的说明
- [CareerCup] 17.11 Rand7 and Rand5 随机生成数字
- Redis的常用方法总结
- 【数据结构】【面试题】找N个数据中最大的K个数据
- spring框架学习(二)依赖注入
- Android-Github-Oauth学习小结1
- Spring入门之实例化Bean的三种方式
- JPA常用注解
- jeecms v7
- Centos7网络配置+图形界面设置
- 历届试题 大臣的旅费(PREV-9)
- 【翻译】Xibo官方文档5-CMS SETTING
- DPDK 虚拟机设置
- 多波束与声纳在找出露管线上的区别
- 编译错误记录
- Blender51个基本操作
- windows 下 go环境配置
- ios 找出导航栏下面的黑线(可隐藏,改变样式等)