变量的名称,地址和变量的值之间的关系密切。编写程序时,先考虑变量有两个属性名称和值(其它先不考虑,如类型),计算机编译和加载程序后认为变量也有两个属性:地址和值,可以认为地址就是变量在计算机内部的名称。在C中可以运用&(取地址符)访问变量的地址,运用*(间接运算符)获取该地址上的值。
EX:&salary表示变量salary的地址,如果p = &salary, 那么*p表示存储在&salary上的值。
简而言之,就是普通变量把值作为基本量,把地址作为通过&获得的派生量,而指针变量把地址作为基本量,而把通过 *(间接运算符)得到的值作为派生量。
下面我们来看下这个交换函数:
#include <iostream>
using namespace std;
int temp;
void Exchange(int * ,int * );
int main()
{
int x = 1, y =2;
cout << x << " " << y << endl;
Exchange(&x, &y);
cout << x << " " << y << endl;
return 0;
}
void Exchange(int *L,int *R)
{
temp = *L;
*L = *R;
*R = temp;
}
运行结果为:
1 2
2 1
Exchange() 函数传递的参数不是值而是地址,和使用 scanf () 函数一样,定义一个 int 型变量 num ,当程序要把值读入变量时调用的是 scanf("%d", &num),即 scanf() 读取一个值然后把该值存储到指定的地址上。