1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> SPEAKER 1: Così mi sento come se io tendo a scrivere printf ciao mondo o printf 3 00:00:04,010 --> 00:00:08,160 ciao cento s abbastanza spesso in contesti dove voglio stampare un 4 00:00:08,160 --> 00:00:11,360 stringa, a volte chiedendo l' parte dell'utente di quella stringa. 5 00:00:11,360 --> 00:00:14,980 Beh, non sarebbe bello se abbiamo creato una funzione della nostra chiamata, 6 00:00:14,980 --> 00:00:19,900 dire, il nome di stampa, il cui scopo nella vita è semplicemente stampare ciao virgola 7 00:00:19,900 --> 00:00:24,560 così e così accettando il così e così come argomento a quella funzione? 8 00:00:24,560 --> 00:00:29,220 Possiamo dichiarare una funzione della nostra come possiamo in Scratch come segue. 9 00:00:29,220 --> 00:00:35,280 >> In altre parole, immagino mi piacerebbe printf tuo nome e poi chiedere all'utente 10 00:00:35,280 --> 00:00:39,470 per il suo nome con lo spago s uguale GetString. 11 00:00:39,470 --> 00:00:42,060 E poi voglio chiamare una funzione chiamato name stampa 12 00:00:42,060 --> 00:00:44,340 passando un s come input. 13 00:00:44,340 --> 00:00:47,770 >> Ora, purtroppo, non esiste una funzione chiamò stampa in C o in 14 00:00:47,770 --> 00:00:48,950 la biblioteca CS50. 15 00:00:48,950 --> 00:00:51,220 Ma non importa, perché noi può rendere noi stessi. 16 00:00:51,220 --> 00:00:54,560 Per dichiarare una funzione di proprio e poi attuarlo, possiamo semplicemente fare 17 00:00:54,560 --> 00:00:59,000 po 'di spazio in questo file e dichiarare questa funzione come segue, nulla - 18 00:00:59,000 --> 00:01:01,900 significa che la funzione non è in realtà andando a restituire qualcosa, 19 00:01:01,900 --> 00:01:03,890 anche se avrà un effetto collaterale - 20 00:01:03,890 --> 00:01:08,030 stampare il nome, e poi cerchiamo di specificare in parentesi il nome di stampa prevede un 21 00:01:08,030 --> 00:01:09,680 argomento di tipo stringa. 22 00:01:09,680 --> 00:01:12,180 E in generale, ci penseremo di che come un nome. 23 00:01:12,180 --> 00:01:15,140 >> E apriamo il nostro tutore e chiudere il nostro tutore. 24 00:01:15,140 --> 00:01:21,930 E poi printf all'interno ciao virgola nuovo nome della linea virgola per cento s. 25 00:01:21,930 --> 00:01:24,570 In altre parole, anche se questo funzione di una sola riga di codice, 26 00:01:24,570 --> 00:01:27,290 non ora hanno un po 'più alto scopo livello di stampa 27 00:01:27,290 --> 00:01:28,950 il nome di qualcuno con un saluto. 28 00:01:28,950 --> 00:01:33,115 >> Ora, all'interno del principale accorgo che sto chiamando il nome di stampa passando un s. 29 00:01:33,115 --> 00:01:35,830 E così mi sembra ora avere un programma completo. 30 00:01:35,830 --> 00:01:38,650 L'unica differenza dagli altri abbiamo scritto è che non solo 31 00:01:38,650 --> 00:01:42,480 questo programma hanno principale, ha anche un dichiarazione e l'attuazione di 32 00:01:42,480 --> 00:01:44,740 nome della stampa, in funzione del mio. 33 00:01:44,740 --> 00:01:49,505 >> Vediamo ora compilare il mio programma con il make funzione zero, ed eseguirlo con il punto 34 00:01:49,505 --> 00:01:51,080 funzione di azzeramento tagliare. 35 00:01:51,080 --> 00:01:53,390 Quando viene richiesto il mio nome Io digito a David. 36 00:01:53,390 --> 00:01:55,830 E io infatti sto salutato con "Ciao, David". 37 00:01:55,830 --> 00:02:00,160 >> Ora, si scopre che deliberatamente Nome di stampa dichiarata in precedenza principale, 38 00:02:00,160 --> 00:02:03,860 dicendo così C in anticipo che ci esiste una funzione chiamata stampa 39 00:02:03,860 --> 00:02:06,930 nome in modo che potrei usare successivamente nel principale. 40 00:02:06,930 --> 00:02:11,610 Ora, avevo invece mettere il nome di stampa alla il fondo del mio file, come francamente 41 00:02:11,610 --> 00:02:15,310 Probabilmente dovrebbe fare in modo che resti principali la prima cosa che ho o 42 00:02:15,310 --> 00:02:18,450 un altro utente vede nel mio codice, si scopre che il mio codice è 43 00:02:18,450 --> 00:02:19,780 non andare a compilare. 44 00:02:19,780 --> 00:02:23,610 >> In particolare, se torno al mio finestra del terminale ed eseguire rendono funzione 45 00:02:23,610 --> 00:02:26,120 a zero ora, notare che sto urlato. 46 00:02:26,120 --> 00:02:30,340 Se ho scorrere nella mia finestra di terminale, Vedrò questo primo errore in rosso, 47 00:02:30,340 --> 00:02:33,120 dichiarazione implicita di Nome funzione di stampa. 48 00:02:33,120 --> 00:02:34,220 >> Ora, che cosa significa? 49 00:02:34,220 --> 00:02:37,190 Bene, anche se ho implementato stampare il nome in questo file, io non ho 50 00:02:37,190 --> 00:02:40,080 attuato prima ho usata in principale. 51 00:02:40,080 --> 00:02:43,160 Ora, si potrebbe tornare al vecchio versione e il nome della stampa messo del 52 00:02:43,160 --> 00:02:44,450 applicazione sulla parte superiore. 53 00:02:44,450 --> 00:02:48,730 >> Ma posso invece solo dare un suggerimento C che c'è una funzione a venire. 54 00:02:48,730 --> 00:02:55,390 In particolare, al di sopra principale posso dichiarare stampare il nome proprio come ho fatto in precedenza, ma 55 00:02:55,390 --> 00:02:59,450 terminare la linea con un punto e virgola, quindi promettendo di attuare, ma non ancora 56 00:02:59,450 --> 00:03:02,180 l'effettiva implementazione della funzione chiamato name stampa. 57 00:03:02,180 --> 00:03:05,860 Posso quindi avere principale nella parte superiore del mio file come speravo, e posso effettivamente 58 00:03:05,860 --> 00:03:07,440 attuare nome di stampa in basso. 59 00:03:07,440 --> 00:03:12,860 >> Se ora torno alla mia finestra del terminale e la funzione di zero ricompilare con make, 60 00:03:12,860 --> 00:03:14,390 questa volta si compila. 61 00:03:14,390 --> 00:03:18,240 E se lo eseguo con funzione barra dot lo zero fornendo il mio nome, io sono 62 00:03:18,240 --> 00:03:20,650 salutato come "Ciao, David". 63 00:03:20,650 --> 00:03:22,268