如何为变量分配特定地址?

时间:2016-09-13 05:08:57

标签: c

如何为已存储的变量指定特定地址?

#include <stdio.h>

void main()
{
    int a = 10;
    printf("%d\n%d\n", a, &a);
    &a = 2300000;
}

3 个答案:

答案 0 :(得分:1)

您无法更改变量的地址。编译器确实具有为变量分配绝对内存地址的功能。使用指针只能指向某个地址。像,

int *p;
p = (int*) 0x00010000;

答案 1 :(得分:1)

不,您无法为变量分配地址。您可以指定任意位置,即。,您可以使用指针

指向某个地址
int *ptr;
ptr = (int*)7000;

但无法更改或指定特定地址。

答案 2 :(得分:0)

您看到的内存地址实际上并不是实际的物理内存地址,而是虚拟地址。每个进程都会收到自己的虚拟内存空间,并且可以在几个进程中使用相同的&#34;地址&#34;。

因此无法更改地址,这样做也没有意义。

在unix中,你可以使用posix_memalign来分配一个与特定数字对齐的地址,但它不能是你想要的任何地址,这是因为C自动对齐内存(例如结构的填充)。 内存只能与2的幂对齐。

相关问题