const int x=10;
"a" will be stored in the stack only (data segment not possible) with its value(10)
"b" will be stored as a pointer (because the array is a pointer to the first element) in the stack and "HELLO" will be stored in heap ( like if we are using malloc).
Think of that line as:
char b; strcpy(b, "HELLO");
b is an array, not a pointer. Stack memory is used for the array.
"x" can be stored in data, stack, or text depending on compiler.