C++ 将数字的地址分配给指针

C++ 将数字的地址分配给指针,c++,pointers,C++,Pointers,为什么指针n可以指向地址,尽管5不是内存位置。 为什么我无法在屏幕上打印n的值。您正在尝试取消引用内存地址0x5,这可能是内存受限 int *n=(int *)5;//Valid cout<<*n;//Invalid 您正在将整数文本5强制转换为int*。这意味着你说0x5是一个地址。当尝试用*n取消引用该指针时,您将得到一个错误 相反,您需要执行以下操作: int 5=5; int*n=&5; cout您正在尝试取消对内存地址0x5的引用,该地址可能是受限内存 int *n=(i

为什么指针n可以指向地址,尽管5不是内存位置。
为什么我无法在屏幕上打印n的值。

您正在尝试取消引用内存地址0x5,这可能是内存受限

int *n=(int *)5;//Valid
cout<<*n;//Invalid
您正在将整数文本5强制转换为int*。这意味着你说0x5是一个地址。当尝试用*n取消引用该指针时,您将得到一个错误

相反,您需要执行以下操作:

int 5=5; int*n=&5;
cout您正在尝试取消对内存地址0x5的引用,该地址可能是受限内存

int *n=(int *)5;//Valid
cout<<*n;//Invalid
您正在将整数文本5强制转换为int*。这意味着你说0x5是一个地址。当尝试用*n取消引用该指针时,您将得到一个错误

相反,您需要执行以下操作:

int 5=5; int*n=&5;
简言之:因为n的值是n*n是n处的值:即它所指向的对象

如果希望n指向值5而不是地址5,则必须使其指向:

int *n=(int *)5;

现在n是堆栈位置的地址,其值为5。

简短回答:因为n的值是n*n是n处的值:即它所指向的对象

如果希望n指向值5而不是地址5,则必须使其指向:

int *n=(int *)5;

现在n是堆栈位置的地址,其值为5。

5是内存位置5是内存位置,但它不存储任何数据???如果它存储数据,如何将其打印出来???您正在尝试取消指向无效位置的指针的引用。对于初学者,如果您需要强制转换,您正在做一些错误的事情。对于专家来说,如果你需要cast,你可能做错了什么。但它不存储任何数据???除非您使用的是嵌入式系统,否则可能不会。使用现代操作系统,您的进程将有一个虚拟地址空间。许多这样的系统会避免接近0.5的地址是一个内存位置5是一个内存位置,但它不存储任何数据???如果它存储数据,如何将其打印出来???您正在尝试取消指向无效位置的指针的引用。对于初学者,如果您需要强制转换,您正在做一些错误的事情。对于专家来说,如果你需要cast,你可能做错了什么。但它不存储任何数据???除非您使用的是嵌入式系统,否则可能不会。使用现代操作系统,您的进程将有一个虚拟地址空间。“许多这样的系统会避免接近0的地址。”昆廷说。是 啊没有关系。不知道我在想什么:@Quentin。是 啊没有关系。不知道我在想什么: