Più chiaro di così:
codice:
#include <stdio.h>
#include <string.h>

int main (void){
	const char aString1 [] = "123456"; 
	const char * aString2 = "123456";
	
	printf ("sizeof (aString1) = %ld;\n", sizeof (aString1));
	printf ("sizeof (aString2) = %ld;\n", sizeof (aString2));
	printf ("strlen (aString1) = %ld;\n", strlen (aString1));
	printf ("strlen (aString2) = %ld;\n", strlen (aString2));
	return 0;
}
che sul mio mac a 64 bit produce:
codice:
$ gcc -Wall -ansi -pedantic -Wextra -Wconversion main.c 
$ ./a.out 
sizeof (aString1) = 7;
sizeof (aString2) = 8;
strlen (aString1) = 6;
strlen (aString2) = 6;
importante: sizeof lavora a tempo compilazione, strlen in esecuzione.

ps. ok scusate l'ho fatto in C. In C++ poco cambia, e come ti suggerisce shodan usa le std::string che fai prima e meglio ;-)