C - Difference between "char var[]" and "char *var"?

arrays, c, pointers, string

Solution

The first creates an array of char containing the string. The contents of the array can be modified. The second creates a character pointer which points to a string literal. String literals cannot be modified.

Problem

I am expecting that both following vectors have the same representation in RAM: ``` char a_var[] = "XXX\x00"; char *p_var = "XXX"; ``` But strange, a call to a library function of type `f(char argument[])` crushs the running application if I call it using `f(p_var)`. But using `f(a_var)` is Ok! Why?

Original source