> char *stackString = "some literal";
Uh, in what way is that "entirely different" from the int declaration? In both cases, you're just copying a couple words from one place to another, which is what the = operator does. There's nothing "special" about that declaration; we're just writing a pointer into a variable on the stack.
My feeling is that you're uncomfortable with C's treatment of strings because you don't entirely understand the memory model.