内存的每个字节都有一个唯一的地址。变量的地址是分配给该变量的第一个字节的地址。假设在程序中定义了以下变量:
char letter; short number; float amount;
图 1 说明了它们在内存中是如何安排的,并显示了它们的地址。
图 1 内存中的变量及其地址
在图 1 中,变量 letter 显示在地址 1200 处,变量 number 在地址 1201 处,而变量 amount 则在地址 1203 处。
图 1 中显示的变量的地址有些随意,仅用于说明目的。事实上,大多数编译器以这样的方式分配空间,即单个变量总是被分配偶数地址。这是因为当前的计算机硬件访问驻留在偶数地址的数据时,速度要比访问驻留在奇数地址的数据更快。
C++ 有一个地址运算符 & 可以用来检索任何变量的地址。要使用它,可以将它放在想要检索地址的变量之前。以下是一个表达式,它将返回变量的地址:
&amount
以下语句可以将变量的地址显示到屏幕上:
cout << long(&amount);
默认情况下,C++ 以十六进制打印地址,以上语句则使用了一个函数式的强制转换,使地址以常见的十进制格式打印,转换后的数据类型为 long。下面的程序演示了如何使用地址运算符来显示变量的地址。
//This program uses the & operator to determine a variable's address. #include <iostream> using namespace std; char letter; short number; float amount; double profit; char ch; int main() { // Print address of each variable // The cast to long makes addresses print in decimal // rather than in hexadecimal cout << "Address of letter is: " << long(&letter) << endl; cout << "Address of number is: " << long(&number) << endl; cout << "Address of amount is: " << long(&amount) << endl; cout << "Address of profit is: " << long(&profit) << endl; cout << "Address of ch is: " << long(&ch) << endl; return 0; }
程序输出结果:
Address of letter is: 5005320
Address of number is: 5005322
Address of amount is: 5005324
Address of profit is: 5005328
Address of ch is: 5005336
值 &amount 指定了计算机内存中 amount 变量的位置:从某种意义上说,它指向的就是 amount 变量。所以,一个表示内存地址位置的值,或者保存了某些变量地址的值,就称为指针。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22125.html