Asignación de cadenas en C

Soy nuevo en C. La asignación de cadena en el siguiente código funciona:

#include<stdio.h>
int main(void){
  char str[] = "string";
  printf("%s\n",str);
}

Pero no funciona en lo siguiente, incluso le doy el número de índice a laname[]:

#include <stdio.h>
int main(void){
  struct student {
    char name[10];
    int  salary;
  };
  struct student a;
  a.name[10] = "Markson";
  a.salary = 100;
  printf("the name is %s\n",a.name);
  return 0;
}

¿Por qué pasó esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta