2015-01-12 4 views
-1

Управление программой не входит в функцию, когда я передаю указатель на встроенный массив символов в функцию, прототипом которой является «void f (int, char *)».
В этой функции я пытаюсь увеличить позицию, в которой указатель указывает внутри массива, используя арифметику указателя и значение по этому адресу.
Каковы могут быть причины, по которым элемент управления игнорирует функцию? В моей программе нет компиляции или логических ошибок.несуществующий заголовок функции

+0

Вы, вероятно, не строили с символами, поэтому нечего вступать. Вы убедились, что существует файл '.pdb' (для Visual Studio), созданный для этой библиотеки? Какова ваша среда сборки (ОС, IDE, компилятор и т. Д.)? – CoryKramer

ответ

2

Я подозреваю, что функция введена нормально, но она кажется вам, как будто это было не потому, что вы не видите изменения указателя, как вы ожидаете. Причина, по которой вы не видите изменения указателя, заключается в том, что вы не передаете указатель по ссылке. Изменение подписи функции

void f(int num, char *&ptr) 

затем переходит к указателю внутри функции будет виден снаружи - в противном случае они применяются к копии указателя, который существует только на время вызова функции.

+0

В качестве альтернативы вы можете вернуть обновленный указатель. –

Смежные вопросы