是否可以从不为零的索引开始数组...即
您有一个由35个元素组成的数组a [35],现在我想从100开始索引,所以数字将是a [100],a [101],... a [134],这可能吗?
我正在尝试为一块板生成一个“内存映射”,例如,我将有一个名为SRAM [10000]的数组和另一个名为BRAM [5000]的数组,但是在“内存”可见性中,它们是连续的,即。 BRAM在SRAM之后立即开始,因此,如果我尝试指向内存位置11000,我会读到它超过10000,然后将其传递给bram。
键入此命令时,我意识到我可以从数字中减去10K并将其传递到BRAM中,但是为了进行论证,是否可以将11000传递给BRAM?
感谢您的任何帮助。
更新以将a [34]固定为a [134]
已更新以获取更多信息:
在我将要实现的实际体系结构中,sram和bram之间可能存在/可能存在间隙,例如,地址11008在内存映射中可能不可见,因此编写了一个充满内存的巨型数组,然后对其进行“分区”可以,但是我仍然需要做逻辑以确定它是否在“sram and bram”的范围内。首先是我要避免的事情。
最佳答案
不,您不能在C中执行此操作。数组始终从零开始。在C++中,您可以编写自己的类,例如OffsetArray
,并重载[]
运算符以访问基础数组,同时从索引中减去偏移量。
您可以尝试这样的事情:
char memory[150000];
char *sram = &memory[0];
char *bram = &memory[100000];
现在,当您访问
sram[110000]
时,您将访问“在bram
中”的内容