difference between -- char a[SIZE]; //Char array of size (SIZE) char *a; //character pointer. Points towards a char (a). char *a[SIZE]; // Array of pointer characters. char *(a[SIZE]); // Pointer to an array of characters. char (*a[SIZE]); ARE char *a[SIZE]; and char (*a[SIZE]); EQUIVALENT ?? And we also say string a; is actually char *a;. So the later is a pointer to a character , which when initialised stores address of char a. So how it acts as a string? Isn't it just a variable storing address of a single character. Similar to int *i. Which is a pointer to an integer not an array of integers. Very confused !!!!