一、数组与指针:
#include <stdio.h>
int main()
{
int arr[4]={1,2,3,4};
//数组名就是一个内存地址,数组在内存中的位置
printf("%08x \n",arr);
//数组第一个元素的地址(数组的首地址)
int* p1 = arr ;//arr本身的类型就是int*
//相当于
int* p2 = &arr[0] ;//第一个元素的地址
return 0;
}
二、指针的加减法:
#include <stdio.h>
int main()
{
int arr[4]={1,2,3,4};
int* p = arr ;
p = p + 1;//后移一个元素
printf("%d\n",*p);
return 0;
}
可以把指针p当作数组使用:(可以把指针当成一个数组)
#include <stdio.h>
int main()
{
int arr[4]={1,2,3,4};
int* p = &arr[1] ;
p[0]=0xaa;
p[1]=0xbb;
return 0;
}
数组的遍历:
#include <stdio.h>
int main()
{
int arr[4]={1,2,3,4};
for(int* p=arr;p<arr+4;p++)
{
printf("%d \n",*p);
}
return 0;
}
注意数组越界访问。
如何看待数组:数组名本身就是内存地址。数组与指针可以灵活转换。
1、数组可以看成一块内存;
2、数组名就是这块内存的地址;
3、然后通过指针来访问它就可以了。