数组:一组相同类型元素的集合
指针变量:是一个变量,存放的是地址
数组可以通过指针来访问
代码1:通过指针访问数组
int main()
{
int arr[10] = { 0 };
//arr是首元素的地址
//&arr[0]
int* p = arr;
//通过指针来访问数组
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
printf("%d ", *(p + i));
}
return 0;
}
结果:
代码2:理解指针和数组之间的关系:
int main()
{
int arr[10] = { 0 };
int* p = arr;
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
printf("%p------------%p\n", &arr[i],p + i);
}
return 0;
}
&arr[i]与p + i的地址完全一样:
数组传参,传的是首元素地址
代码3:用数组
void test(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]); //arr[i]--->*(arr+i)
}
}
int main()
{
int arr[10] = { 0 };
test(arr, 10);
return 0;
}
代码4:用指针
void test(int* p ,int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(p+i));
}
}
int main()
{
int arr[10] = { 0 };
test(arr, 10);
return 0;
}