程序执行结束后,取并不发生变化;
2. 传递变量的指针:
使形参得到一个变量地址,这时形参指针变量指向实参变量单元。c 语言 指针c 语言 指针
void swap(int *x,int *y)
{
int *temp;
temp = x;
x = y;
y = temp;
}
int main()
{
int i,j;
cin >> i >> j;
swap(i,j);
cout << i << ',' << j << endl;
return 0;
}
3. 传送变量的别名:
把变量的引用作为形参;
void swap(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int i,j;
cin >> i >> j;
swap(i,j);
cout << i << ',' << j << endl;
return 0;
}
在 swap 的函数列表声明中 a 和 b 是整形变量的声明;( 注: 此处的 &a不是地址,而是引用 )
而引用型形参的初始化是在函数调用时,通过虚实结合实现的:
当调用 swap 时,由实参将变量名传给形参,
实际上实参传给形参的是地址,从而使两个变量拥有相同的地址;
关于引用的进一步说明:
1. 不能建立 void 型的引用;
2. 不能建立引用的数组:
如:
char c[6] = "hello";
char &cp[6] = c;
3. 可以将变量的引用的地址赋给指针,此时指针指向的是原来的变量:
int a = 3;
int &b = a;
int *p = &b; // p 指向 b 的地址,即 a的地址;
4. 不能定义指向引用类型的指针变量,但是可以建立指针变量的引用:
如:
int &*p = &a ; // cuo;
int i = 5;
int *p = &i;
int *&pt = p; // pt 是一个指向int 型变量指针的引用,初始化为 p,即 tp = p;
5. 可以用const 对引用加以限定,不允许改变该引用的;
int i = 5;
const int &a = i;
a = 3; // 错误;
但是并不阻止改变引用所代表的变量的:
i = 3; // 正确; i = a = 3;
有时希望保护形参的不被修改; (链表的表头)
6. 可以用常量或者常量表达式对引用进行初始化,但此时必须使用 const 做声明;
如:
int i = 3;
const &a = i 3; // 合法;
此时:编译系统首先定义一个临时变量temp 用来存放该表达式的:
int temp = i 3;
const &a = temp; 临时变量是内部生成的,用户不可访问;
这种方法可以用来初始化类型不同的变量的引用声明:
如:

double d = 3.14159;
const int &a = d;
此时系统现将 其转化为:
int temp = d; // 将double型的d 转化为 int型 的temp;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-61530-6.html
你退它进
由于在关键时刻彰显神威