返回介绍

该审查代码了

发布于 2024-10-10 23:21:24 字数 2460 浏览 0 评论 0 收藏 0

让我们把代码拼在一起,回顾一下到目前为止你做了哪些事:

必须以这个顺序排列代码:在顶部包含头文件,这样编译器就能在编译代码前把所有函数都准备好。然后在开始写函数之前定义

tracks ,这叫把 tracks 数组放在全局域。全局变量位于任何函数之外,所有函数都可以调用它们。

最后,你有两个函数,find_track() 在前,main() 在后。find_track() 必须赶在你在 main() 中调用它之前出现。

试驾

下面打开终端,看看代码能否工作。

好消息,程序工作了!

到目前为止,这个程序是你写过最长的一个,但它做了很多的事情。程序创建了一个字符串数组,并利用标准库中的字符串处理函数搜索数组中的歌名,最后找到了用户想要找的歌曲。

百宝箱

如果想了解更多关于 string.h 函数的信息,请参阅: 。 http://tinyurl.com/82acwue 如果你用的是 Mac 或 Linux 的计算机,可以在命令行中查看 string.h 中每个函数的详细介绍,假如想查看 strstr() 函数,可以输入:man strstr

 这里没有蠢问题问:为什么要把数组定义成 tracks[][80] 而不是 tracks[5][80] ?答:也可以这样定义,但编译器知道列表有 5 项,所以你可以省略 5,写成[]。问:既然如此,为什么不直接写 tracks[][] ?答:每首歌的名字不一样长,为了放下最长的歌名,需要让编译器分配足够大的空间。问:也就是说 tracks 数组中每个字符串都有 80 个字符?答:程序会为每个字符串分配 80 个字符,即使歌名很短。问:所以 tracks 数组一共占了 80×5=400 字符?答:没错。问:如果我忘了包含 string.h 这样的头文件会怎么样?答:对于某些头文件来说,编译器会给出一个警告,但最后还是会包含它们;但对另一些来讲,编译器会直接提示编译错误。问:为什么我们要把 tracks 数组定义在函数外面?答:我们把 tracks 放在全局域,全局变量可以在所有函数中使用。问:既然我们创建了两个函数,计算机会先运行哪一个?答:程序总是首先运行 main() 函数。问:为什么我一定要把 find_track() 放在 main() 之前?答:在调用函数前,编译器需要知道两件事,函数接收什么参数以及函数的返回类型是什么。问:如果我把 main() 放到前面会怎么样?答:你会得到几个警告。

 

要点

可以用

char strings[...][...] 来创建数组的数组。

第一组方括号用来访问外层数组。

第二组方括号用来访问每个内层数组中的元素。

有了 string.h 头文件,就可以使用 C 标准库中的字符串处理函数。

可以在一个 C 程序中创建多个函数,但计算机总是先运行 main() 。

代码冰箱贴

这群人正在为一款小游戏编写新的代码,他们创建了一个函数,可以倒过来显示字符串。但悲剧发生了,一部分冰箱贴乱了,你能帮助他们重组代码吗?

代码冰箱贴解答

一群人正在为一款小游戏编写新的代码。他们创建了一个函数,可以倒过来显示字符串。但悲剧发生了,一部分冰箱贴乱了,还好有你帮助他们重组代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文