Я думаю вы уже поняли,что основные конструкции языка си-это функции,чем больше вы их знаете в своей профессии-тем лучше.Так же чем эффективнее и лаконичнее вы пишите свои-тем эффективнее весь код в целом.
Но вот встаёт вопрос,а что если строку нужно передать в функцию? И ещё интереснее вопрос,что если нужно вернуть из функции строку?
Перед дальнейшими действиями попробуйте запустить следующий код:
void main()
{
char hello[]="Hello";
printf("%s\n",&hello[0]);
}
Передавать адрес первого элемента как строку?! D21nkMaster,ты что,поехавший? Спокойно,вы всё это время как раз и передавали как строку адрес первого элемента в функцию printf.
Значит-чтобы передать строку в функцию-достаточно так же принять адрес первого элемента,то есть указатель:
void showstr(char *str)
{
printf("%s\n",str);
}
И конечно же,если мы передаём не константную строку-то так же можем её свободно изменять.Раз уж мы передаём адрес первого элемента строки,значит мы можем и вернуть тот же адрес элемента первой строки.Для этого просто создаём функцию-указатель,чтобы она и возвращала указатель:
char *crypt(char *str)
{
for(int i=0;str[i];++i)
str[i]+=3;
return str;
}
Если у вас на данном этапе появились трудности-отдохните немного,попейте водички и вернитесь к началу.Уверен,у вас получится.
Вы уже понимаете,где это можно использоваться? Как раз в нашем шифровании-строку передавать в функцию и получать на выходе ключ.
Теперь сделаем пару шаг назад и вспомним об массивах.Напомню,массивы-это вроде переменных в переменной.Для этого легко придумать аллегорию,а вот для многомерных массивов-посложнее.
Вы представили себе коробку в коробке? Представьте себе вид сверху,и что эти коробки находятся в некоторой сетке,сетка пронумерована от 0 до n-1,в два направления,вроде координат:
Похоже на простое двумерное пространство,так собственно оно и есть,можно за пример взять прорисовку пикселей на ваших мониторах или же матрицу.
Теперь рассмотрим как со всем этим обращаться:
Создание
int array[2][2];
Обращение
//выводим первый элемент второго массива
printf("%d\n",arr[1][0]);
И наконец как можно обрабатывать элементы такого массива циклами:
for(int i=0;i<2;++i)
{
for(int j=0;j<2;++j)
printf("%d\n",arr[i][j]);
}
В следующем уроке я дополню тему двумерных массивов и мы наконец разберём аргументы ваших программ.Всего доброго!