最近,我对指针感到好奇,而且我不明白为什么以下命令不起作用。
我的想法是创建一个变量,说出它的地址(十进制),要求用户将其输入回来,并将其作为指向前一个变量的指针的地址。最后,两个变量应具有相同的值。
最后一个指针应该指向一个错误的内存地址,因为它存在段错误,但是当我打印指针的地址时,它们是相同的!
#include <iostream>
int main() {
int temp = 0;
printf("Temporary integer addr 0x%x (dec %d)\n", &temp, &temp);
int input = -1;
printf("Give me an address to read (in dec)\n");
std::cin >> input;
printf("You chose the number %d (hex 0x%x)\n", input, input);
int* intPtr = (int*)input;
int* tempPtr = &temp;
if (intPtr == tempPtr) {
printf("It works, they are equal!\n");
} else {
printf("Expected: 0x%x got 0x%x\n", tempPtr, intPtr);
printf("Expected value: 0x%d got 0x%d", temp, *intPtr); // segfaults …Run Code Online (Sandbox Code Playgroud) c++ ×1