在学习指针时,要注意&有两个不同用处。
一、取地址
int a=3;
int *b;
b=&a;
第一行申明一个int型变量a,它的值是3,约定记为a=3,变量a在内存中有一个地址,这个地址的值记作&a,也就是说,&a是把变量a的地址取出来了。
第二行代码申明一个指针(地址),它指向int型。
第三行,是给指针b赋值,这个值就是变量a的地址&a。
所以,在这里的&a表示取变量a的地址。
二、引用
void f(int &a){
...;
}
int main(){
...;
int b=3;
f(b);
...;
}
第一行中函数形参中申明引用一个int型变量a,这个变量就是第七行代码中的b,函数f中的a发生任何变化,将引起第七行中的b的相应变化。
再举一个例子说明:
#include<stdio.h>
int main(){
int a=3;
int &b=a;
b=4;
printf("%d",a);
return 0;
}
运行结果是4,而不是3。
因为第四行申明一个int型变量b,它就是第三行中的a,第五行令b=4,从而a=4。