在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。
C 程序主要包括以下部分:
- 预处理器指令
- 函数
- 变量
- 语句 & 表达式
- 注释
让我们看一段简单的代码,可以输出单词 "Hello W3Cschool!
":
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, W3Cschool! \n");
return 0;
}
尝试一下
接下来我们讲解一下上面这段程序:
- 程序的第一行
#include <stdio.h>
是预处理器指令,告诉 C 编译器在实际编译之前要包含stdio.h
文件。 - 下一行
int main()
是主函数,程序从这里开始执行。 - 下一行
/*...*/
将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。 - 下一行
printf(...)
是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, W3Cschool!
"。 - 下一行
return 0;
终止 main()
函数,并返回值 0
。
编译 & 执行 C 程序
接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:
- 打开一个文本编辑器,添加上述代码。
- 保存文件为
hello.c
。 - 打开命令提示符,进入到保存文件所在的目录。
- 键入
gcc hello.c
,输入回车,编译代码。 - 如果代码中没有错误,命令提示符会跳到下一行,并生成
a.out
(linux操作系统中) 可执行文件。 - 现在,键入
a.out
来执行程序。 - 您可以看到屏幕上显示 "
Hello W3Cschool
"。
$ gcc hello.c
$ ./a.out
Hello, W3Cschool!
请确保您的路径中已包含 gcc 编译器,并确保在包含源文件 hello.c
的目录中运行它。
如果是多个 c 代码的源文件,编译如下:
$ gcc test1.c test2.c -o main.out
$ ./main.out
在Windows上编译
使用mingw进行编译的,可以参考mingw代码编译。
对于初学者而言,最好的解决方案是直接安装集成开发环境(IDE),C/C++的集成开发环境有很多,其中比较出名的是Visual studio(微软出品,在Windows上如鱼得水,著名的Visual C++6.0,就是visual studio的一部分),codeblock(使用mingw作为编译器,也可使用微软的MSVC)和Dev-C++(一款简单但适合初学者的IDE)。这些集成开发环境提供了编译,链接等功能,还提供了debug的功能(还有很多功能,这里不一一细说了)。这些对于开发而言都是相当重要的。以编译为例,VS2019(visual studio)提供了一个运行的按钮,点击直接就可以一步编译运行源代码。
在之前的版本中和codeblock中,提供了更加详细的编译工具栏:
在VC6.0中:
含有编译,连接,运行,debug等多个功能。
在codeblock中也有单独的编译、运行的功能。
使用这些ide编译运行的方法大同小异,在写好代码后点击编译,编译成功会在下方的构建信息显示0 error(s), 0 warning(s) 。通常出现warning说明代码中有不合理的地方,但不影响编译,可以运行(单元线结果可能会有偏差),出现error代表代码出现错误,无法通过编译,不能运行。编译成功后就可以运行代码了。
C语言 基本语法
我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块。
C 的标记(Tokens)
C 程序由各种标记组成,标记可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个标记:
printf("Hello, W3Cschool! \n");
这五个标记分别是:
printf // 标识符 ( // 符号 "Hello, W3Cschool! \n" // 字符串值 ) // 符号 ; // 分号是语句结束符
分号 ;
在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
例如,下面是两个不同的语句:
printf("Hello, W3Cschool! \n");
return 0;
注释
注释就像是 C 程序中的帮助文本,它们会被编译器忽略。它们以 /*
开始,以字符 */
终止,如下所示:
// 单行注释
/*
多行注释
多行注释
多行注释
*/
-
//
也叫行级注释 因为只能注释一行 -
/* */
这个是多行注释 也叫块级注释 这种格式的注释可以单行或多行。
注意:不能在注释内嵌套注释,注释也不能出现在字符串或字符值中
错误演示:
//我是单行注释//的错误演示
char a ='//A';
标识符
C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z
或a-z
或下划线_
开始,后跟零个或多个字母、下划线和数字(0-9
)。
C 标识符内不允许出现标点字符,比如 @
、$
和 %
。C 是区分大小写的编程语言。因此,在 C 中,Manpower
和 manpower
是两个不同的标识符。下面列出几个有效的标识符:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
关键字
下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
auto | else | long | switch |
break | enum | register | typedef |
case | extern | return | union |
char | float | short | unsigned |
const | for | signed | void |
continue | goto | sizeof | volatile |
default | if | static | while |
do | int | struct | _Packed |
double |
C 中的空格
只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。
在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int
)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:
int age;
在这里,int
和 age
之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:
fruit = apples + oranges; // 获取水果的总数
fruit
和 =
,或者 =
和 apples
之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。