指针数组与数组指针

来源:互联网 发布:淘宝价格走势app 编辑:程序博客网 时间:2024/06/04 23:45

数组指针与指针数组

数组指针
首先要明确一点数组由元素类型和数组大小共同决定
例1:int int_array[5]的类型为int[5],可以看成int[5] int_array(便于理解)
定义一个数组指针
例2: int (*p)[5];
由例1我们可以将例2看成int[5] *p;这样就一目了然了
p就是指针变量
接下来我们定义一个二维数组 int a[4][5];
接下来我们让p指向这个二数组
p= a;//a是二位数组首元素的地址即&a[0][0];
当我们执行p++操作时 p指向了数组下一行的地址,即&a[1][0];
由此可见p指向的是一个一维数组,即数组指针指向的是一个一维数组;


指针数组
首先明确一点[]的优先级高于*我们要考虑优先级
定义一个指针数组
例3:int *p[5];
由于[] 的优先级高于*因此我们不能像例1那样看做成 int[5] *p(这样是错误的)
我们可以p[5]当做一个整体q 这样就变成了int *q;

q是一个指针,q是一个数组,因此数组q中的每个元素都是指针变量即p[0]、p[1]、p[2]、p[3]、p[4]都是指针变量
我们赋值时是给p[0]、p[1]、p[2]、p[3]、p[4]赋值,而不是给p赋值
p=a是错误的;p是一个常量,p不可修改。

区别:数组指针只是一个指针变量,指针数组是多个指针变量。





0 0
原创粉丝点击