Строки являются фундаментальными для C (и других родственных языков). При программировании на C вы должны управлять своей памятью. Вы не просто говорите «хорошо, мне понадобится куча строк»; вам нужно подумать о структуре данных. Сколько памяти вам нужно? Когда вы его выделите? Когда ты освободишь это? Допустим, вам нужно 10 строк, каждая из которых должна содержать не более 80 символов.
Хорошо, каждая строка представляет собой массив символов (81 символ - вы не должны забывать ноль, или вы пожалеете!), А затем каждая строка сама находится в массиве. Конечным результатом будет многомерный массив, похожий на
char dict[10][81];
Заметьте, кстати, что dict не является "строкой", "массивом" или "символом". Это указатель. Когда вы пытаетесь напечатать одну из этих строк, все, что вы делаете, это передаете адрес одного символа; C предполагает, что если он только начинает печатать символы, он в конечном итоге обнуляется И это предполагает, что если вы находитесь в начале одной строки, и вы прыгаете вперед на 81 байт, вы будете в начале следующей строки. И, фактически, получение вашего указателя и добавление к нему 81 байта - это единственный возможный способ *1009* для перехода к следующей строке.
Итак, почему указатели важны? Потому что без них ничего не поделаешь. Вы даже не можете сделать что-то простое, например, распечатать несколько строк; вы определенно не можете делать ничего интересного, например реализовывать связанные списки, или хэши, или очереди, или деревья, или файловую систему, или некоторый код управления памятью, или ядро, или ... что угодно. Вы ДОЛЖНЫ понимать их, потому что C просто вручает вам блок памяти, и мы сделаем все остальное, а для выполнения чего-либо с блоком необработанной памяти требуются указатели.
Также многие люди полагают, что способность понимать указатели тесно связана с навыками программирования. Джоэл сделал этот аргумент, среди других. Например
Теперь я свободно признаю, что программирование с указателями не требуется в 90% кода, написанного сегодня, и на самом деле, это прямо опасно в производственном коде. ХОРОШО. Все в порядке. А функциональное программирование практически не используется на практике. Согласен.
Но это все еще важно для некоторых из самых захватывающих заданий по программированию. Например, без указателей вы никогда не сможете работать с ядром Linux. Вы не можете понять строку кода в Linux или любой другой операционной системе, не понимая указателей.
С здесь . Отличная статья.