Значение типа"const *char" нельзя присвоить сущности типа"*char"
Нужно объяснение почему вот так делать нельзя???
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
void ChangeValue(char name[])
{
name = "Jackson";//ERROR
}
int main()
{
const int size = 10;
char name[size];
ChangeValue(name);
return 0;
}
Я знаю что ="Jackson"
-это константый строковый литерал.
ВОПРОС:"Как можно в функции изменить значение массива char-ов name[]
"
Подскажите как можно реализовать?.P.S Не минусуйте ответ,у меня и так низкий рейтинг((
Ответы (1 шт):
Массивы в Си/Си++ не передаются копированием в списке аргументов. Аргумент char name[]
рассматривается как указатель на первый элемент массива char * name
.
Строка в программе "Jackson"
это массив константных букв, а когда вы указателю присваиваете массив, то массив букв автоматически преобразовывается в указатель на первую букву. И ошибка происходит из-за попытки присваивать указатель указателю другого типа.
Чтобы копировать массивы функций нет, для каждого типа всё индивидуально. Копировать строки можно с помощью strcpy
или strncpy
.
#include<iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
void ChangeValue(int size,char name[])
{
strncpy(name,"Jackson",size);
}
int main()
{
const int size = 10;
char name[size];
ChangeValue(size,name);
std::cout<<"name = '"<<name<<'\''<<std::endl;
return 0;
}