Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31686
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-22 23:51
文章分类

全部博文(10)

文章存档

2015年(9)

2014年(1)

我的朋友

分类: C/C++

2014-12-23 19:02:18

        大家好,今天狼童鞋和大家分享数组指针与指针数组的辩证性认识.

给他们的名字中间加(的) 就可让大家最快的对这两个名字分辨清楚:
指针(的)数组:array of pointers, 用于存储指针的数组,也即数组元素都是指针(本质是数组)
数组(的)指针:apointer to an array ,指向数组的指针.(本质是指针)

        那么对其定义又是如何区分的呢:
这里通过运算符的优先级来确定:
        () > [] > *
int *a[4];//先是[]故而其本质则是数组了,即指针数组
int (*a)[4];   //   ()>[],所以其本质为指针
用法和区别:
int * a[4] 指针数组
                表示:数组a中的元素都是int型的指针
                元素表示:*a[i]
int (*a)[4] 数组指针(也称行指针(或者可以理解为限定了指针的步长))
                表示:指向数组a的指针
                元素表示:(*a)[i];
当数组指针指向2维数组时,对其引用其实就和数组名的引用相同
*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]

同时还要讲的就是 数组和指针的引用都是相通的,记住
                    去[]加*
就可以让你在变成过程中脑袋更加轻松一点了


阅读(870) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Linux内核【链表】整理笔记(2)

给主人留下些什么吧!~~