指向结构数组的指针

时间:2014-11-28 17:27:16

标签: c arrays pointers struct

如何创建指向结构成员的指针,即一组int。这就是结构的样子:

typedef struct {
    volatile int x[COORD_MAX];
    volatile int y[COORD_MAX];
    volatile int z[COORD_MAX];
    //... other variables
} coords;

coords abc;

abc是一个全局变量。 现在,我想获得指向x,y和z数组的指针,并将它们保存到另一个数组中。然后通过传递想要的索引来访问它们。这就是我的意思:

void test(int index1, int index2) 
{
    static volatile const int* coords_ptr[3] = {abc.x, abc.y, abc.z};
    coords_ptr[index1][index2] = 100;
}

所以index1会选择哪种坐标类型(x,y,z)。 index2将选择要更改的坐标索引。

请注意,这只是我正在处理的代码的简化。但原则是一样的。

提前致谢!

修改

我写错了代码。对不起,这应该是现在。

2 个答案:

答案 0 :(得分:1)

只有一个小错误:你指针指向const volatile int,这会阻止你写信给他们。

只需写下

static volatile int* coords_ptr[3] = {abc.x, abc.y, abc.z};

它会起作用。

答案 1 :(得分:1)

#include <stdio.h>

#define COORD_MAX 3

typedef struct {
  volatile int x[COORD_MAX];
  volatile int y[COORD_MAX];
  volatile int z[COORD_MAX];
} coords;

coords abc;

void test(int index1, int index2)
{
  static volatile int* coords_ptr[3] = {abc.x, abc.y, abc.z};
  coords_ptr[index1][index2] = 100;
}

int main()
{
  test(0, 0);
  test(1, 1);
  printf("%i %i\n", abc.x[0], abc.y[1]);
  return 0;
}

输出:

100 100