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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
Radser
2 / 0 / 0
Регистрация: 20.12.2009
Сообщений: 11
#1

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

20.12.2009, 15:14. Просмотров 2194. Ответов 3
Метки нет (Все метки)

Пишу котрольку.
В функцию передается массив созданный из объектов на основе собственной структуры. Ищет в нем нужную ячейку по одному из полей структуры объекта. Возвращает указатель на неё, но возвращаемый адрес не соответствует адресу ячейки (определяю во время отладки). Че-то, наверное, замудрил. Подскажите, плиз.
Вот код функции:
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2009, 15:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция возвращает указатель на нужную ячейку переданного массива, но адрес другой (C++):

Функция возвращает адрес , как передать этот адрес другой функции ? - C++
const int max = 5; double * fill_array(double, int); void show_array(const double, double *); // как передать этой функции в...

Функция принимает указатель на void и возвращает указатель на int - C++
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Вывод двумерного массива на экран, переданного через указатель - C++
Выводит совсем не то, что нужно исправить в функции вывода ? // labrab2.12.cpp: определяет точку входа для консольного приложения. // ...

Написать программу, содержащую функцию, которая возвращает минимальный элемент переданного ей массива - C++
3. Написать программу, содержащую функцию, которая возвращает минимальный элемент переданного ей массива, если все элементы массива...

Функция формирует массив и возвращает указатель на него - C++
Задание: написать функцию с аргументами: вещественное х, целое n. Функция формирует массив у: уk=\frac{{x}^{2k}}{k!} k=0,1,..,n-1 и...

Функция, получающая подстроку, возвращает испорченный указатель на строку - C++
Пытаюсь выделить подстроку в Microsoft Visual C++ 2013, чтобы убрать путь к файлу и оставить только имя файла. wchar_t *...

3
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";
1
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
20.12.2009, 15:21 #3
Цитата Сообщение от Radser Посмотреть сообщение
Возвращает указатель на неё, но возвращаемый адрес не соответствует адресу ячейки (определяю во время отладки).
Где тут указатель ? Попробуйте
C++
1
 struct Kniga *FindBookId(...)
1
Radser
2 / 0 / 0
Регистрация: 20.12.2009
Сообщений: 11
20.12.2009, 16:36  [ТС] #4
Спасибо народ!
Интуитивно уже разобрался, а вы помогли с теоретическим обоснованием. Теперь совсем понятно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2009, 16:36
Привет! Вот еще темы с ответами:

Как функция возвращает указатель на структуру в массив указателей - C++
Друзья, следующий вопрос, у меня есть функция, которая: создает указатель на структуру-&gt; выделяет память-&gt; заполняет из файла-&gt; и...

Функция fopen возвращает нулевой указатель (Visual Studio) - C++
Здраствуйте) У меня возникла очень странная проблема.просто мистика. С чем может быть связано возвращение нулевого указателя в...

Функция возвращает строку (или указатель на начало строки) - C++
Подскажите пожалуйста. Застрял на тривиальной задачке. Никак не могу добится чтобы функция возвращала корректно строку.(правильнее наверное...

Функция alltrim удаляет из строки начальные и конечные пробелы и возвращает указатель на преобразованную строку - C++
Дали задание в ВУЗе. Назначение программы: Функция alltrim удаляет из строки начальные и конечные пробелы и возвращает указатель на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
20.12.2009, 16:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru