| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > CИ++. Работа с указателями. |
| Автор: ScarfaseV 7.9.2009, 00:53 | ||
Этот код предназначен для перевода десятичных чисел из одного типа в другой (числовой и строковый) Код вроде понятен, а вопрос в том, зачем выполнять операцию сложения с '0', в строках отмеченных восклицательным знаком. Почему именно когда мы прибавляем '0' мы получаем верный результат? Ведь s это указатель, почему ему нельзя присваивать адрес переменной n, т.е s[5]=&n? Модератор: не забываем пользоваться конпкой "Код". |
| Автор: ISergeyN 7.9.2009, 01:22 | ||
эта функция нерабочая
|
| Автор: Annihilator 7.9.2009, 08:12 | ||
потому что s[5] это char, а &n - это int* |
| Автор: Cheloveck 7.9.2009, 09:01 | ||||
нельзя возвращать указатель на переменную из стека. Тут у тебя в лучшем случае - креш программы, в худшем - будет работать (но не всегда). Я тут недавно себе писал, что-то вроде этого
Обратно не сложнее. |
| Автор: ScarfaseV 7.9.2009, 16:45 | ||||||
почему функция нерабочая? программа нормально работает, выдает результат И встеаки, для чего предназначен этот кусок кода
|
| Автор: Cheloveck 7.9.2009, 17:28 | ||||||
1. Выделение памяти в стеке. 2. Выделение памяти всего для шести символов 3. здесь крах программы, при числе более 6 символов.
по видимому, если в числе менее 6 знаков, она должна забить нулями все впереди стоящие (бред имхо).
|
| Автор: andrew_121 7.9.2009, 17:40 |
вообще странно. это указатель на константный массив. |
| Автор: ScarfaseV 7.9.2009, 19:04 | ||
Просто без этого куска кода, результаты переводов некоторых чисел из типа int обратно в строку получаются неправильными, а с ним все работает. А при числах 0, 123, 777, 1000, 535, 10 в третьем столбике выходят сообщения об ошибках ( 1 столбец String, 2 столбец int, 3 столбец String т.е когда числа переводят в строку) |
| Автор: Anikmar 7.9.2009, 21:54 | ||
Об этом уже как-то спорили. ИМХО Не считаю это правильным, но и ошибки здесь не вижу. Например код:
По идее должен работать. Например, в BDS даже специальные опции в проекте есть - размещать строки в сегментах только для чтения или нет. Думаю это правильно - зачем надуманные ограничения? Программер пусть сам отвечает за свои действия. Сразу оговорюсь даже не собираюсь спорить - это ИМХО. |