因为第一个参数是地址传递,fun(&b,a)中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。
第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。
改成下面代码看看:
#include <stdio.h>void abc(int *i,int *j)
{
int m
*i=*j//*i,*j才是指针变量指向的变量的值
*j=m
}
void main()
{
int a,b
int *pa=&a,*pb=&b
printf("请输入a,b的值:")
scanf("%d,%d",&a,&b)
abc(pa,pb) //
printf("a=%d\tb=%d\n",a,b)
}
#include <stdio.h>int *fmax(int *,int *) /*函数的声明和下面的定义参数类型不一致,应该改成指针类型*/
void main()
{
int x,yint *c,*d
int *pmax
scanf("%d%d",&x,&y)
c=&x
d=&y
pmax=fmax(c,d)
printf("max=%d\n",*pmax)
printf("max=%d\n",*pmax)
}
int *fmax(int *a,int *b)
{
int *p
p=*a>*b?a:b
return p
}