Обращение массива char в C ++, вызывающее ошибку - PullRequest
0 голосов
/ 28 марта 2011

Я использую следующий код для обращения к массиву символов.Мой код, а также ошибка могут быть найдены ниже.

Мой код:

char * reverseStr(char* s) {
int i=0; //legnth of string
while(s[i]) i++;
char reversed[i];
for(int j=0; j<i; j++) {
    reversed[j] = s[i-j - 1]; //look at this later
}
return *(reversed);
}

Ошибка:

        Compiling...
Compile error: your program did not compile correctly:
program.c: In function 'char* reverseStr(char*)':
program.c:18: error: invalid conversion from 'char' to 'char*'
      --> 17:   }
      --> 18:   return *(reversed);

Заранее спасибо!

Ответы [ 5 ]

6 голосов
/ 28 марта 2011

Ваше возвращаемое значение и тип неверны.

Кроме того, ваше объявление reversed недопустимо и в любом случае приведет к утечке памяти.

Кроме того, вычисление длины строки вместо использованияstd::strlen не рекомендуется, и в стандартной библиотеке есть функция std::reverse для обращения строк.

2 голосов
/ 28 марта 2011

Проверьте сообщение об ошибке:

program.c: In function 'int itoa2(int, char*, int)':
program.c:45: error: invalid conversion from 'char' to 'const char*'

В нем четко указано, что это за ошибка: недопустимое приведение от const char * к char

2 голосов
/ 28 марта 2011

Ну, вы возвращаете символ вместо символа *, поэтому вы возвращаете только первую букву в обратной строке вместо строки.Что вызывает ваши сообщения об ошибках, потому что вы пытаетесь рассматривать символ как символ *.

0 голосов
/ 28 марта 2011

В вашем коде i не const.

char reverseStr(char* s) {
int i=0; // --->> NOT CONST
while(s[i]) i++;
char reversed[i];
for(int j=0; j<i; j++) {
    reversed[j] = s[i-j - 1]; //look at this later
}
return *(reversed);
}

char reversed[i]; ---> Массив переменной длины в C ++ ??i должен быть известен во время компиляции.

0 голосов
/ 28 марта 2011


strcpy получает (char *, const char *) в качестве параметров. Однако возвращаемый тип вашей функции - char, поэтому появляется ошибка.
И char reversed [] размещается в стеке функции, пожалуйста, не используйте его как возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...