char mystring creates a single character variable. char *mystring creates a pointer to a character. Since all arrays are are contigious memory spaces holding the same type of data (char array, int array), and the first entry in the array is denoted by the memory address of the variable name, you create a string(an array of characters ending in a '\0') via creating a pointer to the first element in the string. For instance: you create an array char a[512], using the variable a gives you the memory address of the first part of the array, you can call a[0], by using *a. Similarly char *a will do the same thing, except you are not defining the maximum amount of chars the array can hold. Each have their own uses for creating a string.