Поскольку в C "строки" - это просто символьные массивы, вы можете сделать то же самое и там:
char* foo = "Hello World";
printf("%c", foo[4]); // prints o
Более того, "строка" - это просто указатель, указывающий на первый элементмассива символов, заканчивающихся нулевым символом ('\ 0').Строковые функции просто повторяются, пока не найдут этот нулевой символ (именно поэтому им весело, когда он , а не ), и индексация в массив - это просто причудливый способ написания некоторой арифметики указателей:
foo[4]
превращается в
*(foo + 4)