C 语言简单编程速成( 二 )

C 语法C 语言不是一种脚本语言 。 它是一种编译型语言 , 这意味着它由 C 编译器处理来产生一个二进制可执行文件 。 这不同于脚本语言(如 Bash )或混合型语言(如 Python ) 。
在 C 语言中 , 你可以创建函数来执行你希望做到的任务 。 默认情况下 , 执行的是一个名为 main 的函数 。
这里是一个使用 C 语言写的简单的 “hello world” 程序:
#include int main() {printf("Hello world");return 0;}第一行包含一个被称为 stdio.h(标准输入和输出)的 头文件 , 它基本上是自由使用的、非常初级的 C 语言代码 , 你可以在你自己的程序中重复使用它 。 然后创建了一个由一条基本的输出语句构成的名为 main 的函数 。 保存这些文本到一个被称为 hello.c 的文件中 , 然后使用 GCC 编译它:
$ gcc hello.c --output hello尝试运行你的 C 语言程序:
$ ./helloHello world$返回值
这是 Unix 哲学的一部分 , 一个函数在执行后“返回”一些东西:在成功时不返回任何东西 , 在失败时返回其它的一些东西(例如 , 一个错误信息) 。 这些返回的内容通常使用数字(确切地说是整数)表示:0 表示没有错误 , 任何大于 0 的数字都表示一些不成功的状态 。
Unix 和 Linux 被设计成在运行成功时保持沉默是很明智的 。 这是为了让你在执行一系列命令时 , 假设没有任何错误或警告会妨碍你的工作 , 从而可以始终为成功执行做准备 。 类似地 , 在 C 语言中的函数在设计上也预期不出现错误 。
你可以通过一个小的修改 , 让你的程序看起来是失败的 , 就可以看到这一点:
include int main() {printf("Hello world");return 1;}编译它:
$ gcc hello.c --output failer现在使用一个内置的 Linux 测试方式来运行它 。 仅在成功时 ,--tt-darkmode-color: #42962A;">失败时 , || 测试会执行一个命令的第二部分 。
$ ls blah || echo "it did not work"ls: cannot access 'blah': No such file or directoryit did not work现在 , 尝试你的程序 , 在成功时 , 它返回 0;而是返回 1:
$ ./failer--tt-darkmode-color: #42962A;">类型 。 这些语言如此设计使得解释器需要对一个变量运行一些测试来视图发现变量是什么样的数据类型 。 例如 , var=1 定义了一个整型数 , 当你创建一个表达式将 var 与某些东西相加时 , Python 知道显然它是一个整型数 。 它同样知道当你连接 hello 和 world 时 , 单词 world 是一个字符串 。
C 语言不会为你做任何这些识别和调查;你必须自己定义你的变量类型 。 这里有几种变量类型 , 包括整型(int) , 字符型(char) , 浮点型(float) , 布尔型(boolean) 。
你可能也注意到这里没有字符串类型 。 与 Python 和 Java 和 Lua 以及其它的编程语言不同 , C 语言没有字符串类型 , 而是将字符串看作一个字符数组 。
这里是一些简单的代码 , 它建立了一个 char 数组变量 , 然后使用 printf 将数组变量和一段简单的信息打印到你的屏幕上:
#include int main() {char var[6] = "hello";printf("Your string is: %s\r\n",var);}你可能会注意到 , 这个代码示例向一个由五个字母组成的单词提供了六个字符的空间 。 这是因为在字符串的结尾有处一个隐藏的终止符 , 它占用了数组中的一个字节 。 你可以通过编译和执行代码来运行它:
$ gcc hello.c --output hello$ ./hellohello函数和其它的编程语言一样 , C 函数也接受可选的参数 。 你可以通过定义你希望函数接受的数据类型 , 来将参数从一个函数传递到另一个函数: