1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> SPEAKER 1: Deci, eu simt ca și cum am tendința de a Trimite printf salut lume sau printf 3 00:00:04,010 --> 00:00:08,160 salut la suta s destul de des în contexte în cazul în care doresc să imprime o 4 00:00:08,160 --> 00:00:11,360 șir, uneori cerând parte de utilizare a acestui șir. 5 00:00:11,360 --> 00:00:14,980 Ei bine, nu ar fi frumos dacă am creat o funcție de propria noastră numit, 6 00:00:14,980 --> 00:00:19,900 spune, nume de imprimare, al cărui scop în viață este pur și simplu pentru a imprima salut virgulă 7 00:00:19,900 --> 00:00:24,560 așa-și-așa prin acceptarea așa-și-așa ca un argument pentru această funcție? 8 00:00:24,560 --> 00:00:29,220 Putem declara o funcție de propria noastră la fel cum putem în Scratch, după cum urmează. 9 00:00:29,220 --> 00:00:35,280 >> Cu alte cuvinte, să presupunem că aș vrea să printf numele dvs. și apoi cere utilizatorului 10 00:00:35,280 --> 00:00:39,470 pentru numele lui sau a ei cu sfoară e egal getString. 11 00:00:39,470 --> 00:00:42,060 Și apoi m-am dori pentru a apela o funcție numit nume de imprimare 12 00:00:42,060 --> 00:00:44,340 trece un e ca intrare sale. 13 00:00:44,340 --> 00:00:47,770 >> Acum, din păcate, nu există nicio funcție pus numele de imprimare în C sau în 14 00:00:47,770 --> 00:00:48,950 biblioteca CS50. 15 00:00:48,950 --> 00:00:51,220 Dar nu contează, pentru că noi poate ne face. 16 00:00:51,220 --> 00:00:54,560 Pentru a declara o funcție de propriile noastre și apoi se pune în aplicare, putem face pur și simplu 17 00:00:54,560 --> 00:00:59,000 unele cameră în acest dosar și să declare această funcție, după cum urmează, gol - 18 00:00:59,000 --> 00:01:01,900 ceea ce înseamnă că funcția nu este de fapt de gând să se întoarcă ceva, 19 00:01:01,900 --> 00:01:03,890 deși va avea un efect secundar - 20 00:01:03,890 --> 00:01:08,030 imprima nume, și apoi să specificați în paranteze numele de imprimare așteaptă la o 21 00:01:08,030 --> 00:01:09,680 argument de tip șir. 22 00:01:09,680 --> 00:01:12,180 Și, în general, ne vom gândi din care ca un nume. 23 00:01:12,180 --> 00:01:15,140 >> Și să deschidem bretele nostru și închide bretele nostru. 24 00:01:15,140 --> 00:01:21,930 Și apoi printf în interiorul salut virgulă la sută s nou nume de linie virgulă. 25 00:01:21,930 --> 00:01:24,570 Cu alte cuvinte, chiar dacă aceasta Funcția este doar o linie de cod, ea 26 00:01:24,570 --> 00:01:27,290 acum are ceva mai mare scop la nivel de tipărire 27 00:01:27,290 --> 00:01:28,950 numele cuiva cu un salut. 28 00:01:28,950 --> 00:01:33,115 >> Acum, în interiorul de principal, observați că sunt de asteptare nume de imprimare prin trecerea unui s. 29 00:01:33,115 --> 00:01:35,830 Și așa mi se pare acum să aibă un program complet. 30 00:01:35,830 --> 00:01:38,650 Singura diferenta fiind de la alții am scris este că nu numai că 31 00:01:38,650 --> 00:01:42,480 acest program au principal, are de asemenea o declarație și punerea în aplicare a 32 00:01:42,480 --> 00:01:44,740 Numele de imprimare, o funcție de propria mea. 33 00:01:44,740 --> 00:01:49,505 >> Hai acum compila programul meu de make Funcția de zero, și rulați-l cu punct 34 00:01:49,505 --> 00:01:51,080 Funcția de zero slash. 35 00:01:51,080 --> 00:01:53,390 Când vi se solicită pentru numele meu O să tastați în David. 36 00:01:53,390 --> 00:01:55,830 Și eu într-adevăr am întâmpinat cu "Bună, David." 37 00:01:55,830 --> 00:02:00,160 >> Acum, se pare că am foarte în mod deliberat Numele de imprimare a declarat de mai sus principal, 38 00:02:00,160 --> 00:02:03,860 spune astfel C în prealabil că există există o funcție numită de imprimare 39 00:02:03,860 --> 00:02:06,930 nume, astfel că am putea folosi mai târziu, în principal. 40 00:02:06,930 --> 00:02:11,610 Acum, dacă aș fi pus în loc de nume de imprimare la în partea de jos de dosarul meu, ca sincer 41 00:02:11,610 --> 00:02:15,310 Probabil ar trebui să facă astfel încât rămâne principale primul lucru pe care eu sau 42 00:02:15,310 --> 00:02:18,450 un alt utilizator vede în codul meu, se dovedește că codul meu este 43 00:02:18,450 --> 00:02:19,780 nu va compila. 44 00:02:19,780 --> 00:02:23,610 >> În mod specific, dacă mă duc înapoi la mea fereastră de terminal și rulați make funcție 45 00:02:23,610 --> 00:02:26,120 la zero acum, observați că am țipat la. 46 00:02:26,120 --> 00:02:30,340 Dacă aș derula în sus în fereastra mea terminale, Voi vedea acest prim eroare în roșu, 47 00:02:30,340 --> 00:02:33,120 declarație implicită a Numele imprimare funcție. 48 00:02:33,120 --> 00:02:34,220 >> Acum, ce înseamnă asta? 49 00:02:34,220 --> 00:02:37,190 Ei bine, chiar dacă le-am pus în aplicare imprima nume în acest dosar, eu nu am 50 00:02:37,190 --> 00:02:40,080 a implementat-o ​​înainte de am folosit în principal. 51 00:02:40,080 --> 00:02:43,160 Acum, ne-am putea întoarce la vechiul versiunea și numele tipar pus lui 52 00:02:43,160 --> 00:02:44,450 punere în aplicare până sus. 53 00:02:44,450 --> 00:02:48,730 >> Dar eu pot da în schimb doar un indiciu C că există o funcție pentru a veni. 54 00:02:48,730 --> 00:02:55,390 În mod special, de mai sus principal pot declara imprima nume la fel cum am făcut-o mai devreme, dar 55 00:02:55,390 --> 00:02:59,450 termina linia cu un punct și virgulă, astfel promițând să pună în aplicare, dar nu au fost încă 56 00:02:59,450 --> 00:03:02,180 implementare a functiei numit nume de imprimare. 57 00:03:02,180 --> 00:03:05,860 Eu pot avea apoi principal la partea de sus a mea fișier așa cum am sperat, și pot de fapt 58 00:03:05,860 --> 00:03:07,440 punerea în aplicare a numelui de imprimare în partea de jos. 59 00:03:07,440 --> 00:03:12,860 >> Dacă acum mă întorc la fereastra mea terminalul și recompilați funcția de zero, cu make, 60 00:03:12,860 --> 00:03:14,390 de data aceasta compilează. 61 00:03:14,390 --> 00:03:18,240 Și dacă am alerga cu funcție slash punct zero, furnizarea de numele meu, eu sunt 62 00:03:18,240 --> 00:03:20,650 salutat ca "Bună ziua, David." 63 00:03:20,650 --> 00:03:22,268