#include <stdio.h>
void sum_diff(int num1, int num2, int *sum, int *diff){
*sum = num1 + num2;
*diff = (num1 > num2) ? num1 - num2 : num2 - num1;
}
int main(void){
int num1 ,num2;
int sum, diff;
puts("请输入两个整数。");
printf("整数A:");
scanf("%d", &num1);
printf("整数B:");
scanf("%d", &num2);
sum_diff(num1, num2, &sum, &diff);
printf("两数之和是%d, 两数之差是%d。\n", sum, diff);
return 0;
}
调用函数 sum_diff 时,会将 main 函数中的 sum 和 diff 的地址复制给 sum_diff 的 形参 sum 和 diff。
在sum_diff函数体中,将求得的和赋值给 *sum将差值赋给 *diff,这也就相当于对 main函数中的 sum 和 diff进行赋值,因此从 sum_diff 函数返回到main函数之后,和与差也分别被储存在 main函数 的 sum 和 diff 中了。
总结:
- 如果要在函数中修改变量的值,就需要传入指向该变量的指针。
- 只要在被调用的函数里的指针前面写上指针运算符 *,就能间接地处理该指针指向的对象。这也是 * 运算符又称为间接访问运算符的原因。
- 通过在指针前面写上指针运算符 * 来访问该指针指向的对象,称为解引用。
注:
将指向对象的指针作为形参,并在指针前写上指针运算符*,就可以访问该对象本身。利用这一点,就可以在被调用处修改进行调用处的对象的值。