Форум программистов, компьютерный форум CyberForum.ru

Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
Radser
2 / 0 / 0
Регистрация: 20.12.2009
Сообщений: 11
20.12.2009, 15:14     Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой #1
Пишу котрольку.
В функцию передается массив созданный из объектов на основе собственной структуры. Ищет в нем нужную ячейку по одному из полей структуры объекта. Возвращает указатель на неё, но возвращаемый адрес не соответствует адресу ячейки (определяю во время отладки). Че-то, наверное, замудрил. Подскажите, плиз.
Вот код функции:
C++
1
2
3
4
5
6
7
8
Kniga FindBookID(Kniga KatalogKnig[], const int razmer_mas, int ID){
    Kniga rez;
    rez.ID=-1;
    for(int i=0;i<razmer_mas;i++)
        if(KatalogKnig[i].ID==ID)
            return KatalogKnig[i];
    return rez;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2009, 15:14     Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой
Посмотрите здесь:

C++ Функция alltrim удаляет из строки начальные и конечные пробелы и возвращает указатель на преобразованную строку
C++ Функция принимает указатель на void и возвращает указатель на int
C++ Функция возвращает строку (или указатель на начало строки)
Функция с указателем и индексом(Удаляет в строке лидирующие пробелы. Возвращает указатель на преобразованную строку.) C++
C++ Функция принимает указатель на динамический массив и возвращает его же, но без чисел полиндромов (читается с обоих сторон одинаково - 234432)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.12.2009, 15:21     Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой #2
твоя функция возвращает не адрес, а само значение элемента.
вот так надо адес возвращать:
C++
1
2
3
4
5
6
7
8
Kniga *FindBookID(Kniga KatalogKnig[], const int razmer_mas, int ID)
{
//..........
        //и тут...
       return &KatalogKnig[i];
   //в случаии, если не нашел
   return 0;
}
в теле проги не забудь.

C++
1
2
Kniga *kpThisBook=FindBookID(Katalog,n,ID)
if(kpThisBook){/*действия с указателем*/}else cout << "Book not faund\n";
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
20.12.2009, 15:21     Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой #3
Цитата Сообщение от Radser Посмотреть сообщение
Возвращает указатель на неё, но возвращаемый адрес не соответствует адресу ячейки (определяю во время отладки).
Где тут указатель ? Попробуйте
C++
1
 struct Kniga *FindBookId(...)
Radser
2 / 0 / 0
Регистрация: 20.12.2009
Сообщений: 11
20.12.2009, 16:36  [ТС]     Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой #4
Спасибо народ!
Интуитивно уже разобрался, а вы помогли с теоретическим обоснованием. Теперь совсем понятно.
Yandex
Объявления
20.12.2009, 16:36     Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой
Ответ Создать тему
Опции темы

Текущее время: 04:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru