
#include <stdio.h>
#include <stdlib.h>
// swap1 等同于 swap2
int swap1(int &a, int &b){
int t = a;
a = b;
b = t;
return 0;
}
int swap2(int * const a, int * const b){
int t = *a;
*a = *b;
*b = t;
return 0;
}
int main(void){
//引用的本质
//int &b = a;
//b是a的别名 请问 c++编译器后面做了什么?
int a = 100;
int &b = a;
int &c = a;
int &d = a;
//请思考 几个问题
//1.对一个内存空间是否可以起多个名称?
printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);
//2.引用可以拥有多个名称
printf("----------------------------------------------------\n");
int p = 100;
//int &y = p;
int h = 101;
int l = 102;
//引用有没有自己的空间?
printf(" p = %d h = %d l = %d\n", &p, &h, &l);
//printf(" p = %d y = %d h = %d l = %d\n", &p, &y, &h, &l);
//引用有自己的空间
printf("-------------------------------------------------\n");
//结论:引用可以定义多个 引用有各自的空间 那么引用像什么
int ai = 100;
int bi = 1000;
swap1(ai, bi);
printf(" ai = %d bi = %d\n", ai, bi);
swap2(&ai, &bi);
printf(" ai = %d bi = %d\n", ai, bi);
//综合几点引用别名很像 常指针
// int &ai = a; 等同于 int * const ai = &a;
// swap1(ai, bi); 换成 swap2(&ai, &bi);
system("pause");
return 0;
}








被折叠的 条评论
为什么被折叠?



