我试图在用户指定的内存中创建一个指向地址的指针,但是遇到了问题。我实际上设法创建了指针并打印了它的地址,但是我从未成功打印或更改它的内容。有人可以解释为什么吗?
这是我要运行的代码:
int m = 10;
printf("&m = %d (address in dec.)\n", &m);
printf("Enter an address: ");
int address;
scanf("%d", &address);
int* p = (int*) address;
printf("p = %d (address in dec.)\n", p);
printf("*p = %d (value)\n", *p);
这是我与程序进行交互的控制台:
&m = 1220033252 (address in dec.)
Enter an address: 1220033252
p = 1220033252 (address in dec.)
Segmentation fault
如果我尝试使用与&m不同的地址,也会发生同样的事情。
谢谢!
我试图在用户指定的内存中创建一个指向地址的指针,但是遇到了问题。我实际上设法创建了指针并打印了它的地址,但我从未成功打印或...
int
不一定足够大以容纳指针。通常为32位,但是现在许多系统上的指针为64或128位。