Существует два способа «поместить значения в объекты»:
- с инициализацией, когда объект создан
- с присвоением, после создания объекта
Хотя синтаксис схож, но они представляют разные понятия.
Вы можете инициализировать массив, но не можете присвоить ему.
Также есть специальная конструкция для инициализации char
массивов на основе строковых литералов
char arr[] = "foobar";
char arr[] = {'f', 'o', 'o', 'b', 'a', 'r', '\0'};
int arr[] = {1, 2, 3, 4};
// ...
но присвоение должно выполняться поэлементно
char arr[4];
arr[0] = arr[1] = arr[2] = 'X';
arr[3] = '\0';
int arr[4];
arr[0] = arr[1] = arr[2] = 42;
arr[3] = -1;
«Специальный» способ присваивать элементам массивов char
по одному с помощью одного оператора - использовать библиотечную функцию strcpy()
с прототипом в <string.h>
#include <string.h>
int main(void) {
char arr[10];
strcpy(arr, "foo"); // same as arr[0]='f'; arr[1]=arr[2]='o'; arr[3]='\0';
return 0;
}