Em C, posso inicializar uma seqüência de caracteres em uma declaração de ponteiro da mesma maneira que posso inicializar uma seqüência de caracteres em uma declaração de matriz de caracteres?

Essas duas linhas de código atingem o mesmo resultado? Se eu tivesse essas linhas em uma função, a string é armazenada na pilha nos dois casos? Existe uma forte razão para eu usar um sobre o outro, além de não precisar declarar o terminador nulo na primeira linha de código?

char  s[] = "string";
char* s   = "string\0";

questionAnswers(3)

yourAnswerToTheQuestion