创建指向给定地址的指针的问题

问题描述 投票:0回答:1

我试图在用户指定的内存中创建一个指向地址的指针,但是遇到了问题。我实际上设法创建了指针并打印了它的地址,但是我从未成功打印或更改它的内容。有人可以解释为什么吗?

这是我要运行的代码:

    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不同的地址,也会发生同样的事情。

谢谢!

我试图在用户指定的内存中创建一个指向地址的指针,但是遇到了问题。我实际上设法创建了指针并打印了它的地址,但我从未成功打印或...

c pointers memory-management segmentation-fault
1个回答
0
投票

int不一定足够大以容纳指针。通常为32位,但是现在许多系统上的指针为64或128位。

© www.soinside.com 2019 - 2024. All rights reserved.