Указатель на двумерный массив структур - PullRequest
1 голос
/ 07 сентября 2011

У меня есть структура, скажем, 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];

Теперь я хочу получить доступ к элементам структуры StructArray [0] [1], т. Е. StructArray[0][1].cChar или StructArray[0][1].fFloat

Как я могу получить к ним доступ с помощью StructPtr?

Iпопытался использовать StuctPtr[0][1]->cChar, затем ((StructPtr[0])[1])->cChar Оба вернули ошибку.

При StructPtr[0]->cChar сборка прошла успешно.Но это не то, чего я хочу.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Я думаю, вам нужен «указатель на массив измерений [SEC_DIMENSION] [20] структур типа struct MyStruct»:

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

StructPtr = StructArray;

StructPtr[i][j]->cChar;
1 голос
/ 07 сентября 2011

«Теперь я хочу получить к нему доступ через указатель» не очень наглядно. То, что вы имеете в своем примере, не сработает. Вы объявили не указатель на массив, а массив указателей. Это то, что вам нужно? Я не знаю.

Если вам действительно нужен указатель на массив, вы можете объявить его как

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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...