Инициализация указателя структуры с массивом структуры - PullRequest
0 голосов
/ 12 января 2012

У меня есть следующие сомнения

У меня есть массив структур.До того, как он был инициализирован напрямую и использовался в моем коде.Но мне предложили использовать указатели вместо прямой структуры.Но я не могу получить указатель, указывающий на массив structre должным образом.

typedef struct 
{
    int a;
    int b;
} cqiReport;


cqiReport s_cqiReport[2][2];    
cqiReport *ptr[2], *ptr2, *ptr3;
s_cqiReport[0][0].a=1;
s_cqiReport[0][0].b=1;
*ptr= s_cqiReport;
    *ptr2= s_cqiReport[0][0];
    *ptr3= s_cqiReport[1][0];

Я получаю ptr [0], указывающий на s_cqiReport [0] [0], но ptr [2] указывает на некоторый мусорКак мне получить ptr2 [1] балл для s_cqiReport [1] [0]?

Пожалуйста, помогите Спасибо DSP парень

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Вы должны понять, что массив на самом деле является указателем, поэтому *ptr уже указывает на s_cqiReport[0][0], потому что он равен s_cqiReport, который сам по себе является указателем.

Теперь, если выЕсли вы хотите, чтобы ваш указатель указывал на значение, вы должны использовать оператор &, который по сути означает «адрес», поэтому что-то вроде ptr3= &(s_cqiReport[1][0]) делает указатель точкой, где вы хотите его видеть.

Точно так же, я считаю, что ptr3 = s_cliReport + 2 также заставит ptr3 указывать на то место, где вы, кажется, хотите, чтобы он указывал, но я бы не стал выполнять арифметику с вашими указателями, пока вы не будете хорошо понимать указатели и то, как они работают.

0 голосов
/ 12 января 2012

Хорошо, это что-то вроде беспорядка. У вас есть s_cqiReport как многомерный массив и ptr как одномерный массив. Линия

*ptr = s_cqiReport 

не имеет смысла.

Кроме того, вы ничего не инициализировали для реального экземпляра cqiReport.

Попробуйте следующее.

cqiReport *foo = new cqiReport;
foo->a = 9;
foo->b = 3;

Это не отвечает на ваш вопрос, но должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...