指针和数组
既然可以把数组名当成地址存放到一个指针中,我们使用指针来访问一个就成为可能。
让我们看下面代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *p = arr;//指针存放首元素的地址
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < sz; i++)
{
printf("&arr[%d]=%p <===> p+%d = %p\n", i, &arr[i], i, p + i);
}
system("pause");
return 0;
}
所以 p+i 其实计算的是数组 arr 下标为i的地址。
那我们可以直接通过指针来访问数组。
如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *p = arr;//指针存放首元素的地址
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < sz; i++)
{
pr