使用数组的指针
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
上个练习我们学习了指针可以指向数组的任何一个元素,数组名就是数组的首地址,其实数组名也是一个指针,只不多这是一个常量指针非变量指针(常量是不能变化的,变量是能变化的)。
int a[4],*p = a;
上面这个语句表明指针p指向数组a
的首地址,p+1
指向a[1]
的地址,用数组名也可以这样表示:a+1
也是a[1]
的地址。p+1
和a+1
和&a[1]
都是等价的,都是代表a[1]
的地址。
同样p+3
指向的是a[3]
的地址,也是数组a
的最后一个元素的地址,a+3
也是这个作用。
注意 ++p
代表p=p+1
,此时指向的是a[1]
的地址,但是++a
这样的用法是不合法的,因为a
就是数组的首地址,首地址是不变的。指针p
是个变量可以变,所以p+1
之后再赋值给p
是合法的。
我们利用数组名给数组赋值:
int a[5],i;
for(i = 0;i < 5;i++)
{
*(a +i)= i;
}
上面的程序段中a+i
一定要用括号()
括起来,这表明先计算地址再取这个地址中的内容。
在线练习
{$ activeFileHint $}