Sizes of arrays declared with pointers
char c[] = "Hello"; char *p = "Hello"; printf("%i", sizeof(c)); \\Prints 6 printf("%i", sizeof(p)); \\Prints 4 My question is: Why do these print different results? Doesn't c[] also declare a pointer that points to the first character of the array (and therefore should have size 4, since it's a pointer)? It sounds like you're confused between pointers and arrays. Pointers and arrays (in this case char * and char [] ) are not the same thing. An array char a[SIZE] says that the value at the location of a is an array of length SIZE A pointer char *a; says that the value at the location of a is a