内存的每个字节都有一个唯一的地址。变量的地址是分配给该变量的第一个字节的地址。假设在程序中定义了以下变量:
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
总结
以上是内存溢出为你收集整理的指针是什么(详解版)全部内容,希望文章能够帮你解决指针是什么(详解版)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)