C语言指针详解-----数组与指针
2017-03-01 11:36
435 查看
我们可以在函数实参中直接使用数组名来使用数组,数组元素的指针就是数组元素的地址。我们又知道数组名代表数组首元素的地址。因此
p=&a[0];
p=a;
这两条语句是等价的。我们再看一下它的初始化语句
int *p=&a[0]; 或写成 int *p =a;
下面介绍下数组指针的运算:
当指针已经指向一个数组元素时可以进行 p+n 或 p-n n为整数 p+n/p-n指的是指向数组下一个或上一个元素并不是将地址加减而是按照数组元素类型进行加减
同理++怕,--p,p1-p2是同一个道理。
接下来我们来区分下(p+1)和*(p+1)
根据上一篇的讨论我们知道带*的表示具体的变量,不带*表示的是具体的地址因此,这两个语句就很好区分了,举个例子
int a[5]={1,2,3,4,5};
int *p=&a[0];
(p+1)指的是 数组元素a[1]的地址
*(p+1)指的是数组元素a[1] 即*(p+1)=2
p=&a[0];
p=a;
这两条语句是等价的。我们再看一下它的初始化语句
int *p=&a[0]; 或写成 int *p =a;
下面介绍下数组指针的运算:
当指针已经指向一个数组元素时可以进行 p+n 或 p-n n为整数 p+n/p-n指的是指向数组下一个或上一个元素并不是将地址加减而是按照数组元素类型进行加减
同理++怕,--p,p1-p2是同一个道理。
接下来我们来区分下(p+1)和*(p+1)
根据上一篇的讨论我们知道带*的表示具体的变量,不带*表示的是具体的地址因此,这两个语句就很好区分了,举个例子
int a[5]={1,2,3,4,5};
int *p=&a[0];
(p+1)指的是 数组元素a[1]的地址
*(p+1)指的是数组元素a[1] 即*(p+1)=2