hoo ho, i get your question right, and you have no idea how i struggled with c++ before i coluds understand pointers, thats why they even made java, to eliminate the whole thing about pointers, but the minute you understand the, thats it.. Just know that pointers yes have 2 major refences or usage in c++. It all depends on how you use them, but fact is , they do point to an address in memory, not the actual data. Your question goes like this, if i say int my_number = 5; int* my_pointer = # the output ; cout << my_pointer ; displays an address, sth like 45542945; if i output ; cout << *my_pointer; then i get the number 5; this is to say, my_pointer, is a memory (RAM) address, and the value in *my_pointer is the value 5; if when used with a character / string, the pointer will refence the address of the first character, then when i say char* my_ptr = "this is a string"; cout <<my_ptr. my pointer being an address of the 1st character, then i shoudl see the address output, not the whole string. but thats not the case, why??? was that the question. okay, one point you have right, the other point you are missing is that, a pointer when used to refence an array, it points to the first element of the array. why do you think this is correct; int nums[3] = {11,21,31}; int* nums_ptr = nums; cout<< nums_ptr[0] ; because when you do point an array (a string is a also an array), you can copy the whole array into a pointer one time. and yuo know that an array is placed in (contigous) continuous memory locations, i.e. if 11 is in addres x, then 21 is in x+1, and 31. so for integers if you want the third element of the array in that has been copied to an pointer, if you say nums_ptr[2], you wont get the address of the 3rd element, you'll get the value. but again for integers if you say cout<<nums_ptr; you wont get all the elements of the array displayed on the screen like 112131, no, you get the address. thats the only differents with characters since, an array of characters is treated like a string.. displaying the pointer wont display the adress of the fisrt character but the whole string. try play with pointers, that's the weak and stronghold with c++, in that learning is abit confusing but once learnt it gives some crazy flexibility you wont get from any of it's neighbors..