I’m learning to use pointer to copy char array.
I have the following code in C++. What I’m trying to do is to transfer and array (set1) using pointer to another pointer array (temp).
But when I try to print out (temp), it is not the same as (set1).
Transfer an array via pointer to another temp array pointer.
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
char set1[] = "ABC";
char* p = &set1[0];
int tempSize = 0;
char* temp = new char[256];
for (int i = 0; i < 3; i++)
{
*temp = *p;
cout << *temp; // ABC
++temp;
++tempSize;
++p;
}
cout << "\n";
for (int i = 0; i < tempSize; i++)
{
cout << temp[i]; // Why ABC is not printed?
}
delete [] temp;
return 0;
}
Because your pointer is travelling in undefined behavior region:
On top of that,
\0in the end (may not be needed in your code)delete[]ing this corrupt pointer in the end.Since you are writing for learning purpose, I would suggest simple fix to your code:
Now use
temp[i]for traversing purpose.