1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> 扬声器1:所以我觉得我倾向于 写的printf的hello world或printf 3 00:00:04,010 --> 00:00:08,160 你好%的经常S IN背景 在这里我想打印出 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 >> 换句话说,假设我想 printf的你的名字,然后问用户 10 00:00:35,280 --> 00:00:39,470 他或她的名字用绳子 s等于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 >> 现在不幸的是,没有任何功能 在C或称为打印名称 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 然后里面的printf逗号打招呼 %的新线逗号名字。 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 >> 现在的主要内,请注意我 通过传递一个s调用print名字。 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 >> 现在,让我们用make编译我的程序 函数为零,并用点运行它 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 从而告诉下在事前有 存在一个所谓的打印功能 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 >> 特别是,如果我回到我的 终端窗口并运行make功能 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 >> 但我可以不是只给℃的提示 ,有一个函数来。 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