指针与数组联系关系导致的一些现象

指针与数组关联导致的一些现象

1、当指针指向数组元素时,C语言允许对指针进行数值运算,支持并且只支持以下三种运算

(1)指针加上一个整数

(2)指针减去一个整数

(3)两个指针相减

2、两个指针的比较

p1=&a[1];
p2=&a[2];

则p2>p1

3、若数组有N个元素,则虽然a[N]不存在,但经常使用

for(int *p=&a[0]; p<&a[N]; p++)
for(int *p=&a[0]; p<a+N; p++)

4、指针与数组的两种关联形式:

(1)上面所述的算术运算

(2)用数组的名字作为指向第一个元素的指针

a+i等效于&a[i]

*(a+i)等效于a[i]

5、对于形式参数而言,声明为数组跟声明为指针是一们的。但是对于变量而言,声明为数组跟声明为指针是不同的。声明为数组导致编译器会为数组根据元素的数量预留空间,但声明为指针只会导致编译器为一个指针变量分配空间。