有道二级真题不明白。
#include<stdio.h>void f(int *p,int *q);
main()
{
int n=2,m=1,*r=&m;
f(r,&n);printf("%d,%d",m,n);
}
f(int *p,inat *q)
{p=p+1;*q=*q+1;}
结果是1,3。 值传递不是不改变实参的值吗?为什么最后n的值变了。
与这道题的区别
#include <stdio.h>
void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
fun(p,q); printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}3,5 3,5