Es cierto, es un arreglo estatico, Cuando un programa en C tiene chars constantes lo que se hace es, se les coloca en una zona de memoria de solo lectura
===== Memoria de Solo lectura =====
"abc1efg"
==========================
Y el apuntador *x
char* x = "abc1efg";
Esa operacion no es una copia sino una asignacion, basicamente dice que el apuntador x, apuntara a la direccion donde se encuentra la cadena abc1efg (Solo lectura)
Por lo que como te comentaron, al momento de tratar de editar esa zona da como resultado el fallo de segmento.
Si se cambia por
char x[] = "abc1efg";
tal como te dijieron la cosa cambia, son esas pequeñas sutilezas del lenguaje que no te enseñan en la escuela y tienes que aprender de mala manera.
Saludos