Char arr[] = "Hello World";//arr the name of the array, the contents of the arrays are in the stack, and the space occupied is freed when the array is in the same scope.
char *arr = "Hello World";//arr is a pointer, arr consumes memory as a stack of memory, but it points to the memory in the static store, where the static storage space is released at the end of the program. The
following is a small program, the GETSTRING01 () and the GETSTRING02 () function. The
GetString01 () function, when the name of the array is returned, the contents of the array are freed.
GetString02 () function, when a pointer is returned, the contents of the pointer are not released.
Therefore, the GETSTRING02 () function can return the contents correctly, and GETSTRING01 () returns a garbled text.
#include <iostream>
#include <string>
using namespace std;
char * GETSTRING01 ()
{
char arr[] = "Hello World";
return arr;
}
char * GETSTRING02 ()
{
char *arr = "Hello World";
return arr;
}
int main ()
{
char *p = GETSTRING01 ();
cout<<p<<endl;
Char *q = GetString02 ();
cout<<q<<endl;
System ("pause");
return 0;
}
The screenshot of the result is as follows: