形参里,*&
是指针的引用,它可以修改指针里存的地址,也可以按照C的方法修改指针指向的内存区域里的值,而*
是一级指针,它只能做到修改指向的内存区域的值,改不了这个指针里存的地址。
一段简单的代码就能理解了
#include <stdio.h>
void a111(int *c) {
c++;
}
void a222(int *&a) {
a++;
}
int main() {
int b[]={333,666};
int *s = b;
printf("*s = %d\n", *s);
a111(s);
printf("*s = %d\n", *s);
a222(s);
printf("*s = %d\n", *s);
return 0;
}
a111里自己++,只是加的s的副本,跳出函数后就没有了,而a222里是加的s本身,相当于给s起了个别名叫a。