Difference between char pointer and char array
arrays, c++, pointers
Solution
There are many differences between pointers and arrays, but the reason you are getting garbage, is that by the time you use `ptr` with an index, it already points to the null terminator of "12345".
Everytime you do this:
*ptr++;
`ptr` points to the next element it used to point (i.e. 1, 2, 3, ...). When the loop ends, it points to the null terminator `\0` and then when you try to index it with `i`, it points to unknown memory.
I suggest you use a temp pointer to iterate through the elements instead:
const char* ptr; // declaring ptr constant in this case is a good idea as well
...
ptr = "12345";
char *tmp = ptr;
...
while(*tmp != 0)
cout << *tmp++ << endl;
Problem
I have defined 2 variables, one a pointer and one an array ``` char* ptr; char* array; ptr = "12345"; array = new int[5]; for(int i = 0; i < 5; i++) array[i] = i; while(*ptr != 0) cout << *ptr++ << endl; //Get garbage values for(int i = 0; i < 5; i++) cout << ptr[i]; ``` I was wondering what are the major differences between the variables. And why I get garbage values when I try to print the values in "ptr[]" the array way, but it's perfectly fine when iterate through the vales. I can't seem to understand how my variable "ptr" can point to 5 characters, since it should only be able to point to one.