大家好,今天狼童鞋和大家分享数组指针与指针数组的辩证性认识.
给他们的名字中间加(的) 就可让大家最快的对这两个名字分辨清楚:
指针(的)数组: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) |