The following two programs are really confusing me.  In the first program I use const char* and I can reassign the string.  In the second example I use a const char[] and now I can no longer reassign the string.  Could someone please explain why this is?
#include <iostream>
using namespace std;
const char* x {"one"};
void callthis(const char t[]);
int main()
{
    callthis("two");
    return 0;
}
void callthis(const char t[]){
    t=x;        // OK
    // OR
 // x=t;    // OK
}
Second:
#include <iostream>
using namespace std;
const char x[] {"three"};
void callthis(const char* t);
int main(){
    callthis("four");
    return 0;
}
void callthis(const char* t){
    x=t;    // error: assignment of read-only variable 'x';
    // error : incompatible types in assignment of
    // 'const char*' to 'const char [6]'
}
 
     
    