When I write some lines as

Code:
int main(int argc, char **argv) {
	char *string = "Bla0 Bla1 Bla2 Bla3";
	char *temp;
	temp = strtok(string, " ");
}
I've an invalid address error on the strtok call.

But if I write

Code:
int main(int argc, char **argv) {
	char string[128] = "Bla0 Bla1 Bla2 Bla3";
	char *temp;
	temp = strtok(string, " ");
}
the program runs correctly.

What's the problem? Can a string be indifferently represented either by a char pointer either by a char vector?

(I'm sorry for the English ... )