1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> Выступающий 1: Так что я чувствую, что я, как правило, написать Е привет мир или Е 3 00:00:04,010 --> 00:00:08,160 привет процентов с довольно часто в контекстах , где я хочу, чтобы распечатать 4 00:00:08,160 --> 00:00:11,360 строка, иногда спрашивая Пользователь часть этой строки. 5 00:00:11,360 --> 00:00:14,980 Ну, не было бы неплохо, если бы мы создали функция наше собственное называется, 6 00:00:14,980 --> 00:00:19,900 сказать, имя печати, цель которого в жизни просто напечатать привет запятую 7 00:00:19,900 --> 00:00:24,560 так и то-то, приняв так и то-то в качестве аргумента этой функции? 8 00:00:24,560 --> 00:00:29,220 Мы можем объявить функцию самостоятельно так же, как мы можем в пустом следующим образом. 9 00:00:29,220 --> 00:00:35,280 >> Другими словами, предположим, я хотел бы Е свое имя и затем попросите пользователя 10 00:00:35,280 --> 00:00:39,470 для его или ее имя с строке с равно GetString. 11 00:00:39,470 --> 00:00:42,060 А потом я хочу вызвать функцию называется имя печати 12 00:00:42,060 --> 00:00:44,340 прохождения S в качестве входных данных. 13 00:00:44,340 --> 00:00:47,770 >> Сейчас, к сожалению, нет функции называется имя печать в С или в 14 00:00:47,770 --> 00:00:48,950 CS50 библиотека. 15 00:00:48,950 --> 00:00:51,220 Но независимо от того, потому что мы может сделать это сами. 16 00:00:51,220 --> 00:00:54,560 Чтобы объявить функцию самостоятельно и затем реализовать его, мы можем просто сделать 17 00:00:54,560 --> 00:00:59,000 некоторые возможности в этом файле и объявить эта функция следующим образом, недействительными - 18 00:00:59,000 --> 00:01:01,900 означающий, что функция не на самом деле происходит что-то вернуть, 19 00:01:01,900 --> 00:01:03,890 даже если он будет иметь побочный эффект - 20 00:01:03,890 --> 00:01:08,030 печатать имя, а затем давайте уточним в скобках, что имя печать ожидает 21 00:01:08,030 --> 00:01:09,680 аргумент типа строки. 22 00:01:09,680 --> 00:01:12,180 И вообще, мы будем думать из что в качестве имени. 23 00:01:12,180 --> 00:01:15,140 >> И давайте откроем наш скобки и закрыть нашу скобки. 24 00:01:15,140 --> 00:01:21,930 А потом Е внутри привет запятая Новое название линии запятая процентов с. 25 00:01:21,930 --> 00:01:24,570 Другими словами, даже если это Функция только одна строка кода, это 26 00:01:24,570 --> 00:01:27,290 делает сейчас есть какая-то высшая Цель уровень для печати 27 00:01:27,290 --> 00:01:28,950 чье-то имя с приветствием. 28 00:01:28,950 --> 00:01:33,115 >> Теперь внутри основной, обратите внимание, что я называя имя печати, передавая с. 29 00:01:33,115 --> 00:01:35,830 И поэтому я, кажется, теперь есть полная программа. 30 00:01:35,830 --> 00:01:38,650 Единственная разница в том, от других мы написали, что не только делает 31 00:01:38,650 --> 00:01:42,480 эта программа уже главный, он также имеет Декларация и реализация 32 00:01:42,480 --> 00:01:44,740 Название печати, функция самостоятельно. 33 00:01:44,740 --> 00:01:49,505 >> Давайте теперь скомпилировать свою программу с указанием марки нулевая функция, и запустить его с точки 34 00:01:49,505 --> 00:01:51,080 слэш нулевую функцию. 35 00:01:51,080 --> 00:01:53,390 В ответ на запрос на мое имя Я введите Давида. 36 00:01:53,390 --> 00:01:55,830 И я действительно приветствуюсь с "Привет, Дэвид." 37 00:01:55,830 --> 00:02:00,160 >> Теперь оказывается, что я совершенно сознательно заявил Ф.И.О. выше основной, 38 00:02:00,160 --> 00:02:03,860 тем самым рассказывая C заранее, что такая функция называется печати 39 00:02:03,860 --> 00:02:06,930 назвать так, чтобы я мог использовать позже в основной. 40 00:02:06,930 --> 00:02:11,610 Теперь, если бы я вместо поместить имя печать на дно моем файле, так же откровенно, я 41 00:02:11,610 --> 00:02:15,310 вероятно, следует сделать так, чтобы основные остатки Первое, что я или 42 00:02:15,310 --> 00:02:18,450 другой пользователь видит в своем коде, получается, что мой код 43 00:02:18,450 --> 00:02:19,780 не собираетесь компилировать. 44 00:02:19,780 --> 00:02:23,610 >> В частности, если я вернусь к моему окно терминала и запустить сделать функцию 45 00:02:23,610 --> 00:02:26,120 нулю сейчас, обратите внимание, что я кричал на. 46 00:02:26,120 --> 00:02:30,340 Если я прокрутки вверх в моем окне терминала, Я буду видеть эту первую ошибку в красный, 47 00:02:30,340 --> 00:02:33,120 неявная декларация функцию печати. 48 00:02:33,120 --> 00:02:34,220 >> Теперь, что же это значит? 49 00:02:34,220 --> 00:02:37,190 Ну, хотя я реализовал напечатать имя в этом файле, у меня не 50 00:02:37,190 --> 00:02:40,080 реализовали его, прежде чем я имею использовал его в основной. 51 00:02:40,080 --> 00:02:43,160 Теперь, мы могли бы вернуться к старому версия и поставить имя принт- 52 00:02:43,160 --> 00:02:44,450 Реализация наверху. 53 00:02:44,450 --> 00:02:48,730 >> Но я могу вместо этого просто дают C намек что есть функция приехать. 54 00:02:48,730 --> 00:02:55,390 В частности, выше основной могу заявить напечатать имя так же, как я сделал раньше, но 55 00:02:55,390 --> 00:02:59,450 завершить линию с запятой, тем самым обещая реализовать, но еще не 56 00:02:59,450 --> 00:03:02,180 на самом деле реализации функции называется имя печать. 57 00:03:02,180 --> 00:03:05,860 То у меня может быть основным в верхней части моего файл, как я надеялся, и я могу на самом деле 58 00:03:05,860 --> 00:03:07,440 реализовать имя печать внизу. 59 00:03:07,440 --> 00:03:12,860 >> Если бы я сейчас возвращаюсь к своему окне терминала и пересобрать нулевую функцию с указанием марки, 60 00:03:12,860 --> 00:03:14,390 на этот раз он собирает. 61 00:03:14,390 --> 00:03:18,240 И если я запускаю его с точечной функции слэш нулю предоставления мое имя, я 62 00:03:18,240 --> 00:03:20,650 приветствовали как "Привет, Дэвид." 63 00:03:20,650 --> 00:03:22,268