Ошибка сегментации (ядро сброшено), когда я пытаюсь 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];
Другие вопросы по тегам