在C中设置2d数组的起始内存地址?

时间:2016-01-04 23:34:13

标签: c arrays

我有一个二维结构数组,如下所示:

struct foo {
    int bar;
    float baz;
};

我现在正在学习操作系统开发,我尝试做的一件事就是创建这些结构的二维数组,其尺寸为80x25:

struct foo foobar[80][25];

虽然我需要将其设置为地址0xb8000,因为这是视频内存启动的地方。有什么方法可以指定我的数组启动的地址吗?

到目前为止,我尝试过这样做:

struct foo foobar[80][25];
*foobar = (struct foo) 0xb8000;

但这不起作用。编辑:还有,这样做是否合法和/或可能符合c99标准?

1 个答案:

答案 0 :(得分:1)

您不能在特定位置声明数组,但可以使用指针:

struct foo *x;
x = (struct foo*)0xb8000;

这应该可以,但是如果你从正常的程序中尝试过,操作系统可能会抱怨,除非它是DOS或类似的东西。