SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
|||||||||||
#1 | |||||||||||
проблема с передачей параметра функции - C++14.11.2011, 13:12. Просмотров 1850. Ответов 41
Метки нет Все метки)
(
Здравствуйте. Изучил уже 6 языков программирования, но С++ не дается как-то так просто.
Вот есть например часть кода.
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
14.11.2011, 13:12 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос проблема с передачей параметра функции (C++):
41
Проблема, связана с неправильной передачей параметров - C++ Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++ Динамические массивы с передачей в функции - C++
|
talis
|
||||||||||||||||
14.11.2011, 13:34 | #2 | |||||||||||||||
Правильно, потому что при вызове вы передаёте константный массив char ("Фiзика").
И вообще:
0
|
Evg
![]() ![]() |
|
14.11.2011, 13:39 | #3 |
В первом случае у тебя есть массив char'ов, который инициализирован строкой. В втором случае у тебя есть строковой литерал
Почитай две ссылки, чтобы понять, как эти конструкции строит компилятор Изменить значение указателя Чем по умолчанию инициализируется символьный массив? В твоём случае ломается на строке 16 из второго исходника: запись в read-only данные Добавлено через 41 секунду Кстати, компилятор должен был как минимум предупреждение выдать во втором случае
1
|
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
||||||
14.11.2011, 14:20 [ТС] | #4 | |||||
Исправил. Теперь строку возвращает, но все равно есть ошибка.
0
|
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
|
14.11.2011, 14:31 [ТС] | #6 |
спасибо.
ну я изменил char qwe[] = ""; на char qwe[255]; все работает. Но разве если не хватает памяти под строку, не должно автоматически дописыватся нужное к-ство байтов?
0
|
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
|
14.11.2011, 15:37 [ТС] | #8 |
а если я все таки хочу передать параметр непосредственно в аргументе ф-и, тоесть convert("text"); а не char t[5] = "text"; convert(t); ? неудобно каждый раз присваивать значения.
0
|
talis
|
|
14.11.2011, 15:41 | #9 |
SlesherY, хотите изменять буфер - делайте его неконстантным. То есть выделяйте доп. участок памяти, копируйте туда данные, которые планируете менять, и меняйте там.
Добавлено через 47 секунд Единственное что - можете это делать в вашей функции, а не до её вызова.
0
|
Evg
![]() ![]() |
|
14.11.2011, 15:47 | #10 |
Так это "const char*", а не "char*". Если хочешь писать - делай копию, и тут никуда не денешься. В реальной жизни тебе не нужен вызов твоей функции с константным строковым литералом. В реальной жизни у тебя всегда будет работа с буфером
0
|
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
|
14.11.2011, 15:48 [ТС] | #11 |
ну это напрашивается. но как? если char *t то это будет константа? Как иначе выделить?
Не по теме: Прошу не ругать, но просто такая хрень как указатели мне встречается только в С. Нигде еще не встречался. Добавлено через 1 минуту Evg, ясно. Не видел вашего сообщения. Ок.
0
|
Evg
![]() ![]() |
||||||
14.11.2011, 15:50 | #12 | |||||
Это будет неинициализированный указатель, для которого ещё нужно память выделить.
0
|
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
|
14.11.2011, 15:56 [ТС] | #13 |
ясно.спасибо.
да кстати return qwe; из convert() возвращает уже строковую константу. тоесть я должен объявить как char *convert (char str[]) , а потом уже принимать результат char *res; res = convert(str);. qwe - это же чар[1000];
0
|
Заблокирован
![]() |
||||||
14.11.2011, 16:01 | #14 | |||||
- сделай CharToOem(p,p); - в итоге преобразуешь саму подстроку p. Вообще же руссификация CharToOem это API, как вариант предлагаю руссификацию в стиле плюсов Русский текст без танцев с бубнами, там в топике ещё много разных вариантов предложено
![]() Добавлено через 5 минут Вот код без CharToOem
1
|
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
|
|
14.11.2011, 16:10 [ТС] | #15 |
-=ЮрА=-, єто как бы очень упрощает задачу но вот только был поставлен резонный вопрос:
0
|
14.11.2011, 16:10 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
14.11.2011, 16:10 |
Привет! Вот еще темы с ответами:
15
2 параметра в 1 функции - C++ Функции в зависимости от параметра - C++ Передача параметра функции - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |