最近对函数的星号和取地址符有些困惑于是写了这一点简单的代码来回忆一下;
1、
#include <stdio.h>
void f(int x,int y)
{
int t;
t=x;
x=y;
y=t;
printf("x=%d; y=%d\n",x,y);
}
int main()
{
int a=1,b=2;
f(a,b);
printf("a=%d; b=%d\n",a,b);
return 0;
}
由此可见a和b的值不变;
2、
#include <stdio.h>
void f(int *x,int *y)
{
printf("地址x=%d y=%d\n",x,y);
int *t=x;
x=y;
y=t;
printf("地址x=%d y=%d\n",x,y);
printf("*x=%d; *y=%d\n",*x,*y);
}
int main()
{
int a=1,b=2;
f(&a,&b);
printf("a=%d; b=%d\n",a,b);
return 0;
}
只改变了地址。
3、
#include <stdio.h>
void f(int *x, int *y)
{
int t=*x;
*x=*y;
*y=t;
printf("*x=%d; *y=%d\n",*x,*y);
}
int main()
{
int a=1;
int b=2;
f(&a,&b);
printf("a=%d; b=%d\n", a, b);
return 0;
}
改变了a和b 的值
4、
#include <stdio.h>
void f(int &x, int &y)
{
int t=x;
x=y;
y=t;
printf("x=%d; y=%d\n",x,y);
}
int main()
{
int a=1;
int b=2;
f(a,b);
printf("a=%d; b=%d\n", a, b);
同上
标签:include,星号,void,C语言,int,地址,printf,main From: https://blog.51cto.com/u_15879559/5868794