+ 1
Address-less pointers
I understand how pointers work but, what is happening with the const char*? I understand the purpose for it (to make a string) but is merely a "false friend" of sorts. If it is a pointer then what is happening here, it is not refering to address. Any explanation would be awesome. Thank you for your feedback
8 Respuestas
+ 3
A pointer its the adress of first char. Strings (or better C like strings) are an array of char BUT they are terminated by a 0 value char... Example
const char* y= "Hello";
Assume that 0x1 is the value of y (or the adress of first char 'H'), you will have:
0x1 'H'
0x2 'e'
0x3 'l'
0x4 'l'
0x5 'o'
0x6 0 ( is a zero value)
if y would be an char* you can modify any char like:
y[1]='a'; // Now y point to 'Hallo' string
but with const char* you cannot do it
+ 3
A pointer an an array are the same thing; an array is a pointer which points to the first element of the array.
That means a char* is an array of chars, just like {1, 2, 3} is an array of ints (or int*).
It has an address and it is a pointer and you can use it for any pointer things you want.
char* y = "Hello world";
printf("%c\n", *y);
y++;
printf("%c\n", *y);
will print "H", then "e".
`const char*` is a bit different, the compiler will do some optimizations on it and place it in special parts of memory if it can.
+ 2
You have to read it like "a pointer to const char"... Because it point to a const variable, you cannot dereference the pointer for modify pointed value:
char c= 'c';
const char* cp= &c;
char b= *cp; // all ok
*cp= 'd'; // error
+ 2
Both Krow and Schindlabua thanks
+ 1
Yeah, but why is the pointer used with the char value to make a string
if I go
char* y = "Hello world"
it displays the entire sentence how does the pointer make a difference?
Thank for answering
+ 1
Yeah, that is really cool thanks for helping me out.
+ 1
Technically the only difference between pointer and array is that an array dont support pointer arithmetics (its safer think an array like an constant pointer )... Just for clearify
+ 1
👍👍👍