Higher
|
||||||
1 | ||||||
Функции и указатели03.06.2011, 18:47. Показов 1132. Ответов 17
Метки нет (Все метки)
Второй нубский вопрос за день.
До сегодняшнего дня вполне успешно пользовался STL-овскими стрингами, сейчас наткнулся в книге Страуструпа на задание - написать свои аналоги функций из string.h, а также реализовать atoi и itoa. Посидел, поизобретал велосипед... Но на itoa застопорился=\
0
|
03.06.2011, 18:47 | |
Ответы с готовыми решениями:
17
Указатели на функции. Указатели на функции как формальные параметры у функциях высшего уровня Указатели и массивы. Указатели и функции Указатели на массивы. Указатели и функции Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char |
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
|
|
03.06.2011, 19:02 | 4 |
diagon, Ты имеешь в виду, что не выводит 123==123 и 123->321?
0
|
Higher
|
|
03.06.2011, 19:06 [ТС] | 7 |
Я так изначально делал, но т.к. по неведомым мне причинам это не работало(хотя догадываюсь, что возвращает конец строки), то сделал, как в первом посте.
Если вставить эту функцию, то вывод 123 == 123 -> 321(о_О) Трассировщика к сожалению нету, линуксовым дебагером пользоваться пока не умею.
0
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
|
03.06.2011, 19:19 | 10 |
ввёл я qwerty. Когда дотрассировал до строки
первый аргумент - "erty" второй аргумент - "ytre"
0
|
Higher
|
||||||
03.06.2011, 19:23 [ТС] | 11 | |||||
Мм... Функция ведь принимает int, затем потрошит его с конца, в итоге там лежит перевернутое значение. Должна возвращать нормальное... Как туда можно вбивать строку?
Сама str_cpy должна правильно работать, эта строчка
0
|
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
|
|||||||||||
03.06.2011, 19:46 | 12 | ||||||||||
34 строка, поменяй
0
|
Higher
|
|
03.06.2011, 19:52 [ТС] | 13 |
Безрезультатно=(
Я по разному их крутил, вставлял возвращаемое значение и вызывал как войдовую, итог 1... Сейчас поставил вывод строки перед return... Там вообще что-то левое, непонятно, как перевернутая строка выводится вообще.
0
|
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
|
||||||
03.06.2011, 20:01 | 14 | |||||
1
|
Higher
|
|||||||||||||||||||||
03.06.2011, 20:56 [ТС] | 15 | ||||||||||||||||||||
о_О у меня тоже... Но я там еще что-то накрутил, сейчас буду смотреть, в чем была ошибка.
Добавлено через 9 минут А дело-то было в этой строке...
Добавлено через 42 минуты Не, ну это уже мистика какая-то! Был такой мейн
... Понятно почему работало раньше - вбивалось одно и тоже число, а так как инкремента у указателя не было, то оно не менялось. Также примерно известно где ошибка.
0
|
Higher
|
||||||
03.06.2011, 21:19 [ТС] | 16 | |||||
Вставил я туда 2 отладочных цикла, получилось так
И тем не менее, каким-то образом, возвращается значение перевернутой строки! ... Есть сильное подозрение, что этот указатель указывает на что-то очень левое... Хотя тогда была бы ошибка сегментации... ...Я окончательно запутался... Указателям я не понравился, они надо мной издеваются(см. вложение)...
0
|
Higher
|
||||||||||||||||||||||||||
04.06.2011, 14:20 [ТС] | 17 | |||||||||||||||||||||||||
Блин, вроде проверял, а ошибка была глупой...
Ошибка, как я понял, была в том, что я возвращал указатель на конец строки. Теперь возвращается указатель на начало Добавлено через 7 минут Теперь работает и с нулем
Переделал atoi, теперь работает с восьмеричной, десятичной, и шестнадцатеричной системой счисления. Вот код, возможно понадобится кому-нибудь=)
И на последок 2 небольших вопроса. 1) const char * - это ведь указатель на константу, а не константный указатель на char? В таком случае, почему нельзя сделать так
0
|
04.06.2011, 17:12 | 18 |
1)Потому что указатель на char инициализируется указателем на const char, а значит через указатель на char можно менять то, что по идеи const char. А так делать нельзя, на то он и const. (это можно сделать через приведение типа и надеятся на удачу))
2)Потому как нужно писать так *++str, а в том виде как у тебя, ты пытаешься изменить то, что находится по указателю, т.е. const char.
1
|
04.06.2011, 17:12 | |
04.06.2011, 17:12 | |
Помогаю со студенческими работами здесь
18
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции Используя указатели на функцию вычислить значение функции в точке X в соответствии с выбором функции пользователем Распечатать таблицы значений функций cox (x) и на отрезке [a; b] с шагом h, развив функции в ряд Тейлора и используя указатели на функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |