c++将地址转换成int和int有什么区别,什么时候用转换成int的,什么时候是int的
地址是int *,转换成int一般来说没有意义,除非根据2个地址相减得到数组长度一类的操作
int是个数值
int*是个指针
如果你需要打印地址之类的操作,就转int
如果你需要一个指针指向地址,就用int*
32位编译系统:int占四字节,与long相同。long int和int是一回事
64位编译系统:int占四字节,long占8字节,long数据范围变为:-2^63~2^63-1
注意,long long在任何平台和编译器上都已经被定义为占8个字节。
参考文章:
32位与64位下各类型长度对比
将地址转换为int与int*有着很大的区别。
将地址转换为int,实际上是将地址所表示的内存空间的起始地址转换为一个整数,这个整数只是代表了内存空间的地址,并不能通过这个整数直接访问到内存空间的值。因此,当我们需要将内存空间的地址用于比较、存储、传递时,可以使用将地址转换为int的方法。
而将地址转换为int,则是将转换后的整数作为地址,直接访问内存空间的值,这样转换后的int可以操作内存中的值。因此,当我们需要直接访问内存空间的值时,可以使用将地址转换为int*的方法。
需要注意的一点是,在将地址转换为int或int*时,需要确保这个地址是合法的,没有超出程序内存范围,否则可能会导致程序崩溃。
下面是示例代码:
#include <iostream>
using namespace std;
int main() {
int num = 10;
// 将地址转换为int
int addressToInt = (int)#
// 将地址转换为int*
int* intPtr = (int*)#
cout << "addressToInt: " << addressToInt << endl; // 输出地址的整数形式
cout << "intPtr: " << *intPtr << endl; // 输出地址所表示的值
return 0;
}