函数接收两个整数指针,int* a
和int* b
。*a
的值为它们的和,*b
的值为它们的绝对差。
没有返回值,也不需要返回语句。
我得到了*a
的值,但我无法得到*b
的代码。
#include <stdio.h>
void update(int *a,int *b);
int main() {
int a, b;
int *pa = &a, *pb = &b;
scanf("%d %d", &a, &b);
update(pa, pb);
printf("%dn%d", a, b);
return 0;
}
void update(int *a,int *b)
{
*a+=*b;
*b=*a-*b;
}
您可以使用临时变量来存储*a的值,然后使用它:
int tmp = *a;
*a += *b;
*b = abs(tmp - *b);
稍微清理一下。只有函数需要指针。
#include <stdio.h>
#include <stdlib.h> // abs()
void sum_and_diff( int * a, int * b )
{
int sum = *a + *b;
int diff = abs( *a - *b );
*a = sum;
*b = diff;
}
int main(void)
{
int a, b;
printf( "a? " ); scanf( "%d", &a );
printf( "b? " ); scanf( "%d", &b );
sum_and_diff( &a, &b );
printf( "sum = %dn", a );
printf( "absolute difference = %dn", b );
return 0;
}
一个简单的答案(最简单的?),不需要临时变量或外部函数,如abs()
,是:
void update(int *a, int *b)
{
*a += *b;
*b = *a-*b-*b;
}
它还通过减去"extra"来修复你的代码*b
你刚刚添加到*a