2016-05-30 3 views
1

У меня возникли проблемы с пониманием распределения памяти.Как искать внутри массива, который внутри структуры?

Например, если у меня есть на структуру следующим образом:

struct AccountInfo{ 
    int number; 
    int balance; 
    int past[9]; 
    int minimum_past; 
    int maximum_past; 
}; 

Как бы я получить доступ к массиву past[9]? Более прямым вопросом будет вопрос о том, как я найду минимум и максимум past, а затем присвойте эти значения minimum_past и maximum_past?

Я понимаю, что нужно установить элементы в структуре определенным значениям. Я мог бы просто сделать что-то вроде AccountInfo -> number = 10;, но с массивами я все еще смущен.

+0

мимо [12] ?? прошлое [9]. Кроме того, номер AcccountInfo-> недействителен. Вам нужно будет сделать указатель struct для этого. В противном случае вы можете сделать переменную struct say acc и использовать acc.number. Аналогично, acc.past [i] дает вам элемент ith из предыдущего массива. –

+0

Как прошло [12]? Разве это не максимальный индекс 8? pass [9] max index прошло [8]. – khrm

+0

'Информация учетной записи;/* установить свои значения * /; int * min = std :: min_element (std :: begin (info.past), std :: end (info.past)); '(также используя' std :: max_element() '). –

ответ

0

Я сделал вам простой пример.

определить вы структура в файле заголовка:

struct AccountInfo{ 
    int number; 
    int balance; 
    int past[9]; 
    int minimum_past; 
    int maximum_past; 
}; 

в файле CPP:

AccountInfo st_AccInfo; 

доступ к вашей структуры:

int x = st_AccInfo.number; 

for(int i=0; i<sizeof(st_AccInfo.past); i++) 
{ 
    // Navigate your Array from index 0 to 8 
} 
+0

может ли 'i digggzz

+0

@ digggzz да, вы можете. – aghilpro

0

Ну, как вы объявить past как массив из 9 целых чисел, как индексы индекса C++ от 0, больший индекс, который вы можете использовать, не вызывая undef INED поведение 8.

Это, как говорится, можно использовать элементы массива точно, как и другие структуры элементов:

AccountInfo accountInfo; // create a struct 
AccountInfo* paccountInfo = &accountInfo; // define a pointer to it 

accountInfo.last[8] = 12; // direct access 
cout << paccountInfo->last[8] << endl; // access through pointer - outputs 12 
Смежные вопросы