指针数组和数组指针
来源:互联网 发布:现货黄金源码 编辑:程序博客网 时间:2024/06/06 22:43
数组指针和指针数组
数组指针和指针数组在形式上的区别主要是牵涉运算符的优先级,在运算符优先级上,()>[]>*
(1)数组指针,也叫行指针,形式:int (*p)[3]
()优先级高,所以首先p是一个指针,指向一个一位数组,这个数组的长度是3,也是p的步长,执行p+1,p要跨过3个整形数据的长度
int a[2][3];
int (*p)[3];//定义一个数组指针,指向含有3个元素的一位数组
p=a;//该二维数组的首地址付给p,也就是a[0],或者是&a[0][0]
p++;//执行p=p+1,p直接指向a[1][]
所以数组指针也叫做行指针
(2)指针数组,形式:int *p[3]
[]优先级高,所以首先和p结合成一个数组,再有int *说明这是一个整型指针数组,他有n个指针类型的数组元素,注意:这里执行p+1是错误的,这样的赋值也是错误的,p=a,因为p是个不可知的类型,只存在p[0],p[1],p[2],并且他们分别是指针变量,用来存储整型变量的地址,但是可以这样赋值,*p=a,这里的*p表示指针数组的第一个元素的值,也就是a[0]的地址,a的首地址的值
所以要将二维数组赋给指针数组:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
这里的int *p[3]表示一个一维数组存放着三个指针变量,分别是p[0],p[1],p[2].
要分别赋值
两者的区别是数组指针只是一个指针变量,似乎C语言里专门来指向二维数组的,他占有内存中的一个指针变量的存储空间,指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
- 指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- Spring mvc系列二之 控制器多方法访问
- RootKit hook之[一] Object Hook
- 定义一个三角形类Ctriangle,求三角形面积和周长。
- Linux下高并发socket最大连接数所受的各种限制
- 服务器Mcrypt.so加密库未安装
- 指针数组和数组指针
- Spring mvc系列三之 开启注解
- Perl_引用
- Spring mvc系列四之 注解介绍
- Spring mvc系列五之 数据填充与返回
- iOS开发之内存管理:关于assign,retain和copy
- 考虑链路丢失率或冲突的Mac802_11仿真 (for NS2)
- C++ STL -- 第1章 关于这本书
- 读取Excel和出错时的解决