目录
指针操作数组
指针操作一维数组
在介绍之前,我们先了解一下关于数组名的知识。
数组名
代表这段内存首地址
回忆一下指针的定义,这数组名不就是指针吗,我们试着操作一下
int array[3]={1,2,3};
for(int i=0;i<3;i++)
{
printf("%d\t%d\n",array[i],*(array+i));
printf("%p\t%p\n",&array[i],&*(array+i));
}
可以看到,数据和地址都一致。
//对于array(数组名)
//正常操作: 直接存储数组的首地址
//直接把指针当作数组名就可以了
//非正常操作:指向其他元素开始操作数组
所以,对应指针(一级指针)也可以操作数组
int array[3]={1,2,3};
int* p=array;
for(int i=0;i<3;i++)
{
printf("%d\t",p[i]);//对于这种方法我比较推荐,好理解,也可以用指针偏移
//printf("%d\t",*(p+i));
}
ptintf("\n");
*p等效于p[0] 取当前地址对应内存中的值
但是数组名的地址是不能更改的,这也是与指针的区别