gpt4 book ai didi

C 固定数组指向数组的一部分

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:16 26 4
gpt4 key购买 nike

我正在做一个针对这种情况的项目:

typedef unsigned char Page[16384];
unsigned char Memory[16384*64]={...values...};
void foo(Page* page);

现在你可以看到内存由“页面”组成,现在我想将一个页面传递给一个函数,但是页面应该是指向内存值的指针(因此页面的索引应该是指向值的指针内存)。我的意思应该是看这个就明白了:

Page tmp;
Memory[16400]=50;
tmp=(unsigned char[16384])&Memory[16384];//This is not possible but is what I would like to do
printf("Value should be 50: %d\n",tmp[15]);

有什么建议吗?

更新 1:我需要 Memory 是一个大数组而不是数组数组(如果我没记错的话实际上它们是相同的),这是一个项目要求(对于大学)。

更新 2:Obviusly 是一个示例代码,我为 16384(以及 16384*64)使用了一个宏,大小不能改变。

更新 3:我想将 Page 保留为 unsigned char[16384] 因为我想用它来传递应该存储的值(因此它们不会存储在任何地方)但我认为这种方式是不可能的所以我会关注Tyler McHenry建议

更新 4:作为Tyler McHenry声明,更新 3 没有意义,所以我解释我的意思:我想使用 Page 将值传递给必须将这些值存储到“交换文件”(是系统内存模拟器)的函数,所以实际上在某些情况下 Page 不会引用任何东西(只是一个数组的值),但这种方式的问题是页面应该是指向内存部分的指针 OR 只是一个 16384 字节的简单数组,所以 2 种东西的 1 类型是一个问题。

一个例子可能是这样的:

typedef char Page[16384];
void WritePageToSwapFile(char* swapfilePath,Page* page);
...somewhere in a function...
Page myNewPage;
myNewPage[5]=23;
WritePageToSwapFile("swapfile",&myNewPage);
...somewhere else, in another function...
Page tmp;
Memory[16400]=50;
tmp=(unsigned char[16384])&Memory[16384];//This is not possible but is what I would like to do
WritePageToSwapFile("swapfile",&tmp);

我不认为我可以用同一种类型做这两件事

最佳答案

作为函数参数的数组相当于指针。只需将偏移指针(如 Memory + 16384)传递给函数即可。

关于C 固定数组指向数组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3189203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com