int num = 10;
int *p = #
test(p); // 或者 test(&num);
printf(“num = %d\n”, num);
—> num = 1000;
说明:指针作为函数的参数,实参传递的过程是地址传递!
5. 指针作为函数的参数,可以实现什么效果?
函数的内部可以修改实参变量的值!
6. 什么时候需要将指针作为函数的参数?!
1)遇到的问题:
函数只能返回1个数据
如果函数需要返回多个数据怎么办?
2)解决方案
使用指针作为函数的参数,让调用者将自己的变量的地址传递到函数的内部,函数的内部通过指针就可以修改实参变量的值。
例:
int getMaxAndMin(int arr[], int len, int *min)
{
int max = INT32_MIN;
*min = INT32_MAX;
for(int i = 0 ; i < len ; i++)
{
if(arr[i] > max)
{
max = arr[i];
}
if(arr[i] < min)
{
*min = arr[i];
}
}
return max;
}
int main()
{
// 定义一个变量用来存储数组最小值
int min = 0;
// 定义一个指定数组
int arr[] = {12,3,22,49,3,294,3,2,8,45,82,34,0,4,28};
int max = getMaxAndMin(arr,sizeof(arr) / sizeof(int), &min);
printf(“max = %d\nmin = %d\n”, max, min);