в приведенном вами примере вы сравниваете один символ (массив [0]) с адресом скомпилированной строки ("some_string").
Поскольку строковый литерал обрабатывается как массив символов с нулевым символом в конце, а сравнение с массивом символов с помощью оператора == сравнивает адрес массива.
Пример, который вы привели, похож на этот:
char* x = "some_string";
char array[10];
if(array[0] == x)
...
И из этого примера видно, что типы просто не совпадают. Как сказал другой участник, вы используете оператор [] для получения определенного символа из смещения в скобках от начала массива.