Ошибка сегментации (ядро сброшено), когда я пытаюсь cout const char *[i], в чем проблема?
Компилятор g++ говорит:
ошибка сегментации (ядро сброшено)
когда этот код работает:
#include <iostream>
using namespace std;
int main(){
const char *constantChars[3], *variableChars[3];
long int numbers[3];
for(int i=0; i<4; i++){
constantChars[i] = "hello number: ";
numbers[i] = i;
variableChars[i] = (const char *) numbers[i];
cout<<constantChars[i]<<variableChars[i]<<endl;
}
return 0;}
это сбой, когда cout<<variableChars[i]<<endl
по моему за цикл.
2 ответа
Изменить:
variableChars[i] = (const char *) numbers[i];
чтобы:
variableChars[i] = (const char *)(&numbers[i]);
Проблема заключается в длине объявленных вами массивов. Вы установили длину равной 3, поэтому она должна использоваться для индекса от 0 до 2, тогда как в вашей программе вы используете индекс от 0 до 3.
Просто увеличьте длину всех массивов до 4, это решит вашу проблему.
Изменить:
const char *constantChars[3], *variableChars[3];
long int numbers[3];
чтобы:
const char *constantChars[4], *variableChars[4];
long int numbers[4];