指向二维结构阵列的指针

时间:2011-09-07 05:43:55

标签: c pointers structure

我有一个结构说MyStruct: -

#define SEC_DIMENSION 2
struct MyStruct
{
  char cChar;
  float fFloat;
  int   iInt;
};

struct MyStruct StructArray[SEC_DIMENSION][20];  //Two Dimensional Array of Structures.

现在我想用指针访问它。

struct MyStruct *StructPtr[SEC_DIMENSION];

我的作业如下: -

 StructPtr[0] = &StructArray[0][0];

现在,我想访问Structure StructArray [0] [1]的成员,即StructArray[0][1].cCharStructArray[0][1].fFloat

如何使用StructPtr访问它们?

我尝试使用StuctPtr[0][1]->cChar然后((StructPtr[0])[1])->cChar 两者都返回了错误。

StructPtr[0]->cChar构建成功。但这不是我想要的。

2 个答案:

答案 0 :(得分:1)

“现在我想用指针访问它”并不是很具描述性。您的示例中的内容不起作用。你声明的不是指向数组的指针,而是指针数组。这就是你需要的吗?我不知道。

如果你真的需要一个指向数组的指针,你可以将指针声明为

struct MyStruct (*StructPtr)[20];

然后将其指向您的数组

StructPtr = StructArray;

从此时起,您可以通过此指针访问原始数组StructPtr[i][j]

StructPtr[i][j].cChar = 'a';

或者,您可以将指针声明为

struct MyStruct (*StructPtr)[SEC_DIMENSION][20];

然后将其指向您的数组

StructPtr = &StructArray;

从此时起,您可以通过此指针访问原始数组(*StructPtr)[i][j]

(*StructPtr)[i][j].cChar = 'a';

答案 1 :(得分:1)

我认为你需要一个“指向struct MyStruct类型结构的维数[SEC_DIMENSION] [20]数组的指针”:

struct MyStruct (*StructPtr)[SEC_DIMENSION][20];

StructPtr = StructArray;

StructPtr[i][j]->cChar;