答案 0 :(得分:4)
让Page
成为unsigned char*
而不是unsigned char[16384]
,您将拥有您想要的内容。唯一需要注意的是,您必须在外部记住(例如使用常量PAGE_SIZE
或其他内容)页面的大小,因为您将无法使用sizeof(Page)
来获取此信息。
e.g。 (也使用PAGE_SIZE
常量消除代码中散布的幻数16384 ......)
/* In C, this has to be a define, since I'm going to use it as part of an
* array size specifier. In C++ it could be a constant integer */
#define PAGE_SIZE 16384
typedef unsigned char* Page;
unsigned char Memory[PAGE_SIZE*64]={...values...};
Page tmp;
Memory[PAGE_SIZE+15]=50;
tmp=&Memory[PAGE_SIZE];
printf("Value should be 50: %d\n", tmp[15]); // Prints 50
/* Print out all of the values in page "tmp" */
for (int i = 0; i < PAGE_SIZE; ++i) {
printf("%d\n", tmp[i]);
}
答案 1 :(得分:4)
作为函数参数的数组等同于指针。只需将Memory + 16384
之类的偏移指针传递给函数。
答案 2 :(得分:3)
您可以声明页面数组:
Page Memory[64] = {{first page}, {2nd page} ... };
但是,这个数组将与平面阵列同构。
答案 3 :(得分:1)
如果您将tmp
的类型更改为Page *
,则可以执行以下操作:
Page *tmp;
Memory[16400]=50;
tmp = (Page *)&Memory[16384];
WritePageToSwapFile("swapfile", tmp);
......这就是你想要的吗?