带索引的指针是否可以访问非数组连续数据块



如果我有几个intstruct,是否可以像数组中那样访问它们?由于堆栈分配,int的地址将减少,但将是连续的。我有类似于这个的代码

struct z
{
static int a;
static int b;
static int c;
static int d;
static int e;
static int get(int index)
{
int* p = &e;
return p[index];
}
};
int z::a = 1;
int z::b = 2;
int z::b = 3;
int z::d = 4;
int z::e = 5;
int main()
{
int a = z::get(2);
}

我想知道这是否总是可能的,我是否应该做这样的事情。

我想知道。。。如果我真的应该做这样的事。

你不应该。程序的行为是未定义的。

如果我有一个包含多个int的结构,是否可以像数组中那样访问它们?

不,这是不可能的(至少不是以这种简单的方式(。

如果你想像数组一样访问,你应该使用一个数组:

struct z
{
static int e[5];
static int get(int index)
{
return e[index];
}
};
int z::e = {5, 4, 3, 2, 1};

最新更新