---
title: C
localeTitle: C
---
# 你好，世界！ - 你的第一个C程序

## 充分利用这门课程

在继续之前，请确保您对本指南的这一部分中的所有概念感到满意。让你的第一个程序运行很重要，因为它可以让你跟随示例，这是另一件好事 - 练习是完美的！可能令人困惑的概念会有一个链接到附录的注释。如果您不理解某个概念，请确保查阅附录以获取更多信息。

## 课程目标

本课程的目标是向初学者讲授C语言。理想情况下，以前从未接触过计算机语言的人将能够通过遵循这些指南来了解C.但是，通过在每篇文章的末尾添加摘要，它们对于更有经验的程序员仍然有用。虽然这里介绍的内容可以转移到像Arduino这样的微控制器，但它不是本指南的重点。

## 什么是C？

C是Dennis Ritchie于1969年至1973年间在贝尔实验室发明的通用编程语言。从那时起，它就被用来创建像Linux内核这样的东西，它允许软件与基于Linux的操作系统上的硬件进行交互。它可以执行此操作以及其他低级操作，因为它设计为非常接近机器代码，同时仍然是人类可读的。因此，它提供了对计算机内存和硬件的直接访问。这使得它在硬件和机器人应用中非常有用，因为快速访问这些功能非常重要。 与其他低级语言一样，C需要编译。编译过程采用可由人读取的C代码，并将其转换为可由计算机读取和执行的代码。编译需要编译器，可以从命令行使用，也可以在IDE中使用。

如果您更喜欢使用命令行，请考虑使用`gcc` 。默认情况下，它可以在GNU + Linux操作系统和Mac上找到，并且很容易在Windows上运行。但是，对于初学者来说，拥有IDE可能会更舒适。如果您对能够从GUI编写和运行代码感兴趣，请考虑使用CodeBlocks或Xcode。

现在你有了这个背景，让我们从'Hello，World'计划开始吧。 'Hello，World'是一种开始使用语言的传统方式：它表明我们可以编写代码并使其运行，因此它是一个很好的起点！

## 你好世界在C

```C
#include <stdio.h> 
 
 int main(void) 
 { 
    printf("hello, world\n"); 
    return 0; 
 } 
```

让我们一步一步地分解这个程序吧。

首先是`#include` ：

```C
#include <stdio.h> // This is called preprocessor directives 
```

这是编译器查找和包含一组头文件的指令。头文件包含我们可以使用的其他代码。在这种情况下，已指示编译器包含`<stdio.h>` ，其中包含各种有用的函数，如`printf()` 。我们也可以把它写成`#include"stdio.h"` 。我们将详细介绍稍后的函数，但是现在只记得函数是我们可以使用的代码集合。

```C
int main(void) 
 { 
 } 
```

此代码声明了main函数。主要功能是特殊功能 - 它总是被调用，并且始终是程序的“主要”部分。如果这不在你的程序中，你的程序将无法运行，也无法编译。

使用`int`启动函数声明意味着当函数通过其代码运行时，此函数将给出一个`int`值 - 它是此函数的输出。 `int`是'整数'数据类型，整数是整数，如-3,0或18.所以我们知道这个代码会运行，当它完成时，它会给我们一个整数。按照惯例，此整数为0。

接下来是`main` 。 `main`是这个函数的名称，正如你之前学到的，拥有一个`main`函数很重要，因为如果没有它，你的程序将无法工作。 `main`后跟`(void)` 。这告诉编译器该函数不接受任何参数，这意味着它没有输入。

这可能现在没有多大意义，但是当你稍后开始阅读C中的函数时，你将会学到更多。现在，请记住，您的C程序需要`main` ，它不接受任何输入，并且它给出一个数字作为其输出。

最后，有括号： `{`和`}` 。这些标志着功能的开始和结束。开放的大括号（ `{` ）标记开头，而大括号（ `}` ）标记结束。两者之间的一切都在功能范围内。

现在让我们来看看该计划的内容：

```C
    printf("Hello, World!\n"); 
```

`printf`是一个接收文本并将其打印到屏幕的功能。括号表示我们希望`printf`函数获取和打印到屏幕的信息。我们表明这是一个我们想要打印的字符串，用引号括起来“像这样”。

注意在引号中找到的\\ n - 这告诉`printf`函数打印换行符。当您在键盘上按Enter键时，会出现换行符。在没有明确告诉C打印换行符的情况下，所有内容都将打印在同一行上。

最后，printf（）语句以分号（ `;` ）结束。这表明这行代码结束了。没有它，编译器不知道一行结束而另一行开始，所以包含它是很重要的。

该程序以return语句结束：

```C
return 0; 
```

这表明函数已经结束，它应该通过给运行的任何值赋值0来结束。当您在计算机上运行代码时，这很好，因为它允许其他程序以更好的方式与您的程序进行交互。

和以前一样，这行以分号结尾，表示该行已完成。

## 编译和运行

您可以将hello world文件保存为您想要的任何内容，但它需要以.c文件扩展名结尾。在此示例中，该文件已命名为“helloworld.c”，因为这是一个带有.c文件扩展名的明确名称。

有许多方法可以在您的计算机上编译和运行C代码。以下是一些：

#### 使用GCC从命令行编译和运行

如果您运行的是Mac或GNU + Linux，那么您已经安装了GCC。

为了运行你的C程序，需要编译它。要使用gcc从命令行进行编译，请从终端运行以下命令：

```shell
gcc -o helloworld ./helloworld.c 
```

`gcc`是Gnu C编译器，它会将我们提供的C文件编译成可由您的计算机运行的程序。

`-o helloworld`告诉GCC你想要编译的文件（gcc的输出）是一个名为“helloworld”的文件。该命令的最后一部分告诉GCC可以找到要编译的C文件。如果你不习惯从命令行导航，这一步将很难，但是没关系 - 它很容易学习和回来，或者你可以尝试从IDE。

编译完成后，运行以下命令：

```shell
./helloworld 
```

如果一切顺利，你应该看到`Hello, World!`打印到屏幕上。

#### 使用CodeBlocks编译和运行C.

[可以从此处下载代码块。](http://www.codeblocks.org/downloads/26) 使用`file` - > `new` - > `file`一个新程序，选择C / C ++ source，选择C作为您的语言，然后复制您之前读过的helloworld.c文本。使用`Build` - > `Build and Run`编译并运行代码。

#### 使用Xcode编译和运行C.

[Xcode可以从这里下载。](https://developer.apple.com/xcode/)

#### 使用Dev-C ++编译和运行C.

[Dev-C ++可以从这里下载。](https://sourceforge.net/projects/orwelldevcpp/) 用`file` - > `new` - > `Source File`一个新程序，然后复制你之前读过的helloworld.c文本，然后用`file` `save As` `file` - > `save As`为hello.c，编译并运行代码`Execute` - > `Compile & Run` 。

# 在你继续之前......

## 回顾

*   C是编程语言的通用语言。
*   C用于重新实现Unix操作系统。
*   C非常有用，因为它体积小，速度快，并且可以访问低级操作。因此，它在机器人，操作系统和消费电子产品中得到了很多应用，但在网页等方面却没有。
*   AC计划有几个关键部分：
*   include语句，它告诉C编译器在哪里可以找到将在程序中使用的其他代码。
*   main函数，它是代码首先执行的地方，也是编译时所必需的。
*   在将要执行的main函数中的东西，包括一个return语句，它关闭程序并为调用它的程序提供一个值。
*   需要编译C才能运行。
*   C可用于访问特定硬件地址并执行类型惩罚以匹配外部强加的接口要求，并且对系统资源的运行时需求较低。
