故事是这样的:
#include<stdio.h>
void change1 (int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
}
void change2 (int &m,int &n)
{
int c;
c=m;
m=n;
n=c;
}
int main()
{
int a=1;int m=1;
int b=2;int n=2;
change1(&a,&b);
printf("-a-%d--\n",a);
printf("-b-%d--\n\n\n",b);
change2(&m,&n); //错误,错误,错误
printf("-m-%d--\n",m);
printf("-n-%d--\n\n\n",n);
return 0;
}
哎,chang2里面的形参不是需要两个地址吗? &m,&n,不是取地址吗?对啊!我传入两个地址,没毛病啊!这是当初学C语言心中的疑惑,但是我是个废柴!哦,书上说不用写&,直接写m,n就行了。好了我记住了!but!but!but!废柴是不知道原理是什么的,只知道这样子去用。好了,今天遇到问题报错了吧!废柴开始紧张了!
在这里不得不吐槽教科书,垃圾,就写一句“注意int &不是取地址,是引用,详情自主百度”不就交代的很清楚了吗?害我这个废柴找了半天答案。垃圾教科书。
|