我有一个二维结构数组,如下所示:
struct foo {
int bar;
float baz;
};
我现在正在学习操作系统开发,我尝试做的一件事就是创建这些结构的二维数组,其尺寸为80x25:
struct foo foobar[80][25];
虽然我需要将其设置为地址0xb8000
,因为这是视频内存启动的地方。有什么方法可以指定我的数组启动的地址吗?
到目前为止,我尝试过这样做:
struct foo foobar[80][25];
*foobar = (struct foo) 0xb8000;
但这不起作用。编辑:还有,这样做是否合法和/或可能符合c99标准?
答案 0 :(得分:1)
您不能在特定位置声明数组,但可以使用指针:
struct foo *x;
x = (struct foo*)0xb8000;
这应该可以,但是如果你从正常的程序中尝试过,操作系统可能会抱怨,除非它是DOS或类似的东西。