- 如果一个函数的参数是一个数组,那么他传递的是数组的地址,所以我们形参可以用一个指针类型的变量来接受这个数组的地址
看看如下代码 体会一下:
#include <stdio.h>
void test(int *p1,int length)
{
for (int i = 0; i <length; i++)
{
printf("%d\n",*(p1+i));
}
}
int main(int argc, const char * argv[])
{
int arr[] = {10,20,30,40};
int length = sizeof(arr)/sizeof(arr[0]);
test(arr,length);
return 0;
}
这是一个数组的遍历的代码,因为arr[]这个数组,arr是一个地址,那么我们当然可以用一个指针来接受用户传递过来的地址了。
我们也可以通过传递指针来改变变量的值:
void test2(int *p1,int *p2)
{
*p1 = *p2;
}
int main(int argc, const char * argv[])
{
int num1 = 10;
int num2 = 20;
int *p1 = &num1;
int *p2 = &num2;
test2(p1, p2);
printf("num1 = %d\n",num1);
return 0;
}
还有交换两个变量的值:
void test2(int *p1,int *p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(int argc, const char * argv[])
{
int num1 = 10;
int num2 = 20;
int *p1 = &num1;
int *p2 = &num2;
test2(p1, p2);
printf("num1 = %d,num2 = %d\n",num1,num2);
return 0;
}