C语言的基本概念

1. 编写一个简单的C程序

  • # include 
    
    int main()
    {
        printf("Hello World!");
        return 0;  //表明程序终止时,会向操作系统返回值0
    }

2. 编译和链接

  • 预处理

    • 首先、程序会交给预处理器。预处理器执行以#开头的命令
  • 编译
    • 修改后的程序现在可以进入编译器了。编译器会把程序翻译成机器指令(即目标代码)。然而这样的程序还是不可以执行的。
  • 链接
    • 最后一个步骤中,编译器把由编译器产生的目标代码和所需的其他代码整合到一起,这样最后产生了可执行的程序,这些附加代码包括程序中用到的库函数。

3. 简单程序的一般形式

3.1 指令

  • 在编译C程序之前,预处理器会首先对其进行编辑。我们把预处理执行的命令称为指令。
    # include <stdio.h>
  • 这条指令说明,在编译前把 #include 中的信息“包含”到程序中去。 包含C标准输入/输出库的信息。C语言中拥有大量类似于 ,每个头中都包含一些标准库的内容。

3.2 函数

  • 函数是构建程序的构建块。事实上,C函数就是函数的集合。
    函数分两大类:一类是程序员编写的函数,另一类是则是作为C语言提供的一些函数,我们把后者称为库函数。
  • 一个C程序可以包含多个函数,但只有主函数Main是必须有的。
  • 如果main是一个函数,那么他会返回一个值吗?是的,他会在程序结束向操作系统返回一个状态码。
    # include <stdio.h>

    int main (void)
    {
        printf("你还有的努力么?这是一个问题。");
        return 0;

    }
  • main前面的int表明该函数将返回一个整数值。圆括号中的void表明main函数没有参数。

  • return 0;

    • 一是使main函数终止;
    • 二是指出main函数的返回值为0。
    • 如果main函数的末尾没有return语句,程序仍然能终止。但是,许多编译器会产生一个警告信息,因为函数应该返回一个整数。

3.3 语句

  • 语句是程序运行时执行的命令。
  • C语言规定好每条语句都要以分号结尾。

4. 注释

  • / / 注释多行
  • // 注释单行
  • /* 后面代码全注释

5. 变量和赋值

大多数程序在产生输出之前往往需要执行一系列的计算,因此需要程序在执行过程中有一种临时存储数据的方法。和大多数编程语言一样,C语言中的这类存储单元被称为变量。

5.1 类型

  • 每一个变量都必须有一个类型。类型用来说明变量所存储的数据的种类。
  • 因为类型会影响变量的存储方式以及允许对变量进行的操作,所以选择合适的类型是非常关键的。

5.2 声明

  • 在使用变量之前必须对其进行声明。为了声明变量,首先要指定变量的类型,然后说明变量的名字。
int height;                    //整形变量
float profit;                  //浮点型变量
int height,length,width;       //同类型可进行声明合并
  • main函数包含声明时,必须把声明放置在语句之前。
int main(void)
{
    声明;
    语句;
}

5.3 赋值

变量通过赋值的方式获取值。

    height = 8;
    length = 12;
  • 8,12称为常量,将常量赋给变量height,length。

5.4 显示变量的值

printf(" H : %d\n",H);

  • 占位符%d用来指明在显示过程中变量height的值的显示位置。
    • %d仅用于int型变量
    • %f用于float型变量,若要显示小数点后显示p位数可以用%.pf

5.5 初始化

当程序开始执行时,某些变量会自动设置为0;而大多数变量不会,或者在表达式中使用该变量,可能会得到某些不可预知的结果,如2568,-30891等没有意义的数值。

  • 在变量声明中加入初始化,也可以采用赋值。

5.6 显示表达式的值

printf的功能不局限于显示变量中储存的数,它可以显示任意数值表达式的值。

  • C语言的一个通用原则
    • 在任何需要数值的地方,都可以使用具有相同类型的表达式。

5.7读入输入

scanf函数需要知道将获得的输入数据的格式。
printf函数需要知道输出数据的显示格式。

6.定义常量的名字

宏定义

  • 当对程序进行编译时,预处理器会把每一个宏替换为其代表的值。
  • 宏还可以用来定义表达式。
  • 宏的名字只用了大写字母。这是大多数C程序员遵循的规范,但并不是C语言本身的要求。

给常量命名

  • 尽量贴近能够表达所需值的含义

7.标识符

关键词(有些关键词是C99新增的,还有一些是C1X新增的)

auto extern short while
break float signed _Alignas
case for sizeof _Alignof
char goto static _Atomic
const if struct _Bool
continue inline switch _Complex
default int typedef _Generic
do long union _Imaginary
double register unsigned _Noreturn
else restrict void _Static_assert
enum return volatile _Thread_local
  • 标识符可以含有字母、数字、下划线,但必须是以字母或者下划线开头
  • C语言是区分大小写的,许多程序员会遵循在标识符中只使用小写字母的规范(宏命名除外)
  • 为使名字清晰,必要时刻加入下划线
  • 关键字不能作为标识符来使用

8. C程序的书写规范

  • 语句可以分开放在任意多行内。
  • 记号之间的空格使我们更容易区分记号,可以在每个运算符的前后都放上一个空格。
  • 缩进有助于轻松识别程序嵌套
  • 空行可以把程序划分为逻辑单元,更容易辨别程序的结构。
  • 适当加上注释,有助于解读
分类: C

易碎

易碎

我看到的今夜的星空,是几万年前的光,我眼中的你是此时的你!

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注

网站ICP备案皖ICP备2024045222号-1