Las si vas a inicializar el arreglo de char al momento de la declaración debes hacerlo asi:
Código:
char b[] = "qwert";
//otra manera :
char *b = "qwert";
Cuando tratas de guardar una cadena de más de 5 caracteres en el ejemplo que pusiste:
Código:
#include<iostream>
using namespace std;
int main(){
char b[5];
cin >> b;
cout << b << endl;
return 0;
}
Estás escribiendo en una zona de memoria no reservada, es decir de b[5] en adelante, por eso te da un error de violación de segmento.
Para evitar esa clase de cosas el C++ te provee de una clase llamada string, que reserva más memoria a medida que la longitud de los caracteres que almacenas aumenta.
Saludos