Достигают ли эти две строки кода одного и того же результата? Если бы у меня были эти строки в функции, хранится ли строка в стеке в обоих случаях? Есть ли веская причина, по которой я должен использовать одно вместо другого, кроме того, что не нужно объявлять нулевой терминатор в первой строке кода?
char s[] = "string";
char* s = "string\0";