The output makes sense because the memory storage for the arrays are not equal. For the char's, their literal characters are compared. Try running this example.
int main(void) {
char a[] = "bar";
char b[] = "bar";
printf("Arrays Test: %x == %x ? %d\n",&a,&b,(a==b));
char* x = "bar";
char* y = "bar";
printf("Literals Test: %x == %x ? %d, however x == y ? %d\n",&x,&y, (&x==&y),(x==y));
return 0;
}
This online runnable example shows that the char's memory references are not the same.
If you wanted to see if the array's content is equal, you would need to call every char in the array and compare it to the secondary array manually. You could potentially end execution faster by checking the sizes of the array against each other.
An additional point is that "pointerizing" the chars or arrays makes no difference in this scope of comparison.