Инициализация и присваивание - это две разные (но похожие) вещи.
Вы можете инициализировать массив, указав для него значение при его объявлении / определении.
Вы не можете присвоитьмассив.
Вы можете скопировать значение в массив, используя memcpy
или strcpy
:
char name[20];
strcpy(name, "Test";
Но для ваших целей вы можете инициализировать массивкак часть инициализации структуры:
typedef struct {
char id[10];
char name[20];
} Employee;
Employee salesManager = {
"A12345678",
"Test"
};
/* OR */
Employee salesManager = {
.id = "A12345678",
.name = "Test"
};
Поскольку вы спрашиваете о C ++, а не C, вероятно, лучше использовать std::string
, а не необработанные массивы символов.std::string
намного более гибок: вы можете присваивать значения, включая строковые литералы, объектам std::string
.