如何创建指向结构成员的指针,即一组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
将选择要更改的坐标索引。
请注意,这只是我正在处理的代码的简化。但原则是一样的。
提前致谢!
修改
我写错了代码。对不起,这应该是现在。
答案 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