今天遇到一个学员的问题,我觉得比较经典,他想实现一个函数交换两个数的值。
当然参数是今天的主角,指针,代码大致如下:
void fun(int *a, int *b)//交换两个数的值
{
int*k ;
k=a;a=b; b=k;
}
void main()
{
int a=3, b=6,*x=&a,*y=&b;
fun(x, y);
printf("a:%d b:%d\n", a, b);
}
很典型的对指针没有理解到位。
事实上fun函数只是短暂的实现了指针的指向,函数结束后xy的指向还原。
所以无事发生。
如果想要实现使用指针来交换两个数的值,代码如下:
void fun(int *a, int *b)
{
int k ;
k=*a;*a=*b; *b=k;
}
void main()
{
int a=3, b=6,*x=&a,*y=&b;
fun(x, y);
printf("%d %d\n", a, b);
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!