Нужно объяснение почему вот так делать нельзя???
#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[]
char name[]- это не массив, а указатель,char *(это проблема в языке). Массивы в С++ присваивать вообще нельзя (тоже проблема в языке), а на строкеname = "Jackson";будет попытка присвоить указателю объект без const квалификатора указатель на объект с const квалификатором, что запрещено (ну хоть что-то, имеющее смысл). Для копирования строк и массивов есть куча функций - всякие strcpy memcpy. А вообще вместо C-style массивов следует использоватьstd::array, а для строк -std::string. – user7860670 Jan 30 '21 at 11:11Jacksonпервому элементу,я правильно понимаю??? – D1slav Jan 30 '21 at 11:17char name[]в аргументе функции - это не массив, а указатель. А"Jackson"- как раз массив. И вы пытаетесь присвоить указателю наcharстроковый литерал, который в этом контексте преобразуется в указатель наchar const. – user7860670 Jan 30 '21 at 11:20