从零开始的C语言学习第一课:C语言常见概念

  • 目录

    1. C语⾔是什么?

    2. C语⾔的历史和辉煌

    3. 编译器的选择VS2022

    编译和链接​编辑

    编译器的对⽐

    VS2022安装教程:https://www.bilibili.com/video/BV11R4y1s7jz/

    4. VS项⽬和源⽂件、头⽂件介绍

    流程图​编辑

    5. 第⼀个C语言程序

    6. main函数

    第⼀次写代码,⼀些常⻅的错误总结:

    7. printf和库函数

    printf("hello C\n");

    那什么是库函数呢?

    8. 关键字介绍

    C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字。

    C语⾔的32个关键字如下:​编辑

    9. 字符和ASCII编码

    什么是字符?什么是ASCII码?

    我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数 据:

    单个字符的打印可以使⽤%c来指定格式:

    可打印字符展示:

    10. 字符串和\0

    11. 转义字符


    1. C语⾔是什么?

  • ⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语 那⼈和计算机是怎么交流的呢?使⽤计算机语⾔。 ⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机 ⼯作的。 C语⾔就是众多计算机语⾔中的⼀种,当然C++/Java/Go/Python都是计算机语⾔。

  • 2. C语⾔的历史和辉煌

  • C 语⾔最初是作为 Unix 系统的开发⼯具⽽发明的。从零开始的C语言学习第一课:C语言常见概念_第1张图片

  • 3. 编译器的选择VS2022

  • 编译和链接从零开始的C语言学习第一课:C语言常见概念_第2张图片

  • 注: 1. 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)

  • 2. 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)【参照上图】

  •  编译和链接类似于高中课本中DNA的转录和翻译.c文件必须经过编译和链接才可以运行

  • (个人理解欢迎指正)

  • 编译器的对⽐

  • C语⾔是⼀⻔编译型的计算机语⾔,需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。 那我们常⻅的C语⾔编译器都有哪些呢? ⽐如:msvc、clang、gcc 就是⼀些常⻅的编译器,当然也有⼀些集成开发环境如:VS2022、 XCode、CodeBlocks、DevC++、Clion等。

  • VS2022 集成了MSVC(安装报包较⼤⼀些,安装简单,⽆需多余配置,使⽤起来⾮常⽅便)
  • XCode 集成了clang(苹果电脑上的开发⼯具)
  • CodeBlocks 集成了gcc(这个⼯具⽐较⼩众,需要配置环境,不太推荐)
  • DevC++ 集成了gcc(⼩巧,但是⼯具过于简单,对于代码⻛格的养成不好,⼀些竞赛使⽤)
  • Clion 是默认使⽤CMake,编译器是可以配置的(⼯具是收费,所以暂时推荐⼤家使⽤)
  • 整体考虑,推荐⼤家安装VS2022的社区版本学习,免费,使⽤⽅便,⼯作中常⻅。

  • VS2022安装教程:https://www.bilibili.com/video/BV11R4y1s7jz/

  • 4. VS项⽬和源⽂件、头⽂件介绍

  • 在VS上写代码,我们是需要创建项⽬的,直接新建项⽬就可以了。 在项⽬中就可以添加源⽂件和头⽂件。 C语⾔把 .c 为后缀的⽂件称为源⽂件,把 .h 为后缀的⽂件称为头⽂件。

  • 流程图从零开始的C语言学习第一课:C语言常见概念_第3张图片

  • 右击源文件进行新建项 从零开始的C语言学习第一课:C语言常见概念_第4张图片

    更改文件名(以.c作为后缀) 从零开始的C语言学习第一课:C语言常见概念_第5张图片

  • 5. 第⼀个C语言程序

  • #include
    int main()
    {
        printf("hello C");
        return 0;
    }
  • 在VS2022上运⾏代码的快捷键: Ctrl+f5

  • 6. main函数

  • 每个 C 语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝, main 函数也被叫做:主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类 型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。

  • main函数是程序的⼊⼝

  • main函数有且仅有⼀个

  • 即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)

  • 第⼀次写代码,⼀些常⻅的错误总结:

  • main 被写成了mian

  • main后边的()漏掉了

  • 代码中不能使⽤中⽂符号,⽐如括号和分号

  • ⼀条语句结束后,有分号

  • 7. printf和库函数

  • 在上⾯的代码中有⼀句代码如下:

  • printf("hello C\n");

  • 代码中使⽤了 printf 函数,实现了在屏幕上的信息的打印。
  • 这⾥简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏 幕)上进⾏信息的打印。上⾯的代码是使⽤ printf 函数打印字符串。只要把想要打印的⼀串字符放 在双引号中并传递给printf函数就可以打印。
  • printf函数也可以⽤来打印其他类型的数据,⽐如:
    int n = 100;
    printf("%d\n", n); //printf打印整型
    printf("%c\n", 'q'); //printf打印字符
    printf("%lf\n", 3.14); //printf打印双精度浮点型
    
  • 这⾥的 %d , %c 等是占位符,会被后边的值替换。(后期课程再介绍) 库函数的时候,是需要包含头⽂件的,⽐如: printf 函数需要包含的就是 stdio.h 这个头⽂件, 具体的⽅法就是:

  • 在开头加上

    #include 
  • 那什么是库函数呢?

  • 为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不 同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准 库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函 数其他编译器不⼀定⽀持)。

  • ⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。 库函数⽐较多,提前了解可参考链接:https://cplusplus.com/reference/clibrary/

  • 8. 关键字介绍

  • C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字。

  • 关键字都有特殊的意义,是保留给C语⾔使⽤的

  • 程序员⾃⼰在创建标识符的时候是不能和关键字重复的

  • 关键字也是不能⾃⼰创建的。

  • C语⾔的32个关键字如下:从零开始的C语言学习第一课:C语言常见概念_第6张图片

  • 注:https://zh.cppreference.com/w/c/keyword(C语⾔关键字的全部介绍)
  • 9. 字符和ASCII编码

  • 什么是字符?什么是ASCII码?

  • 在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号 括起来的,如:'a','b','@'。

  • 我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆ 进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为 了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语 ⾔中的字符就遵循了 ASCII 编码的⽅式。

  • ASCII码表参考:https://zh.cppreference.com/w/cpp/language/ascii

  • 我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数 据:

  • 字符A~Z的ASCII码值从65~90
  • 字符a~z的ASCII码值从97~122
  • 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
  • 数字字符0~9的ASCII码值从48~57
  • 换⾏ \n 的ASCII值是:10
  • 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察
  • 单个字符的打印可以使⽤%c来指定格式:

  • #include 
    int main()
    {
     printf("%c\n", 'Q');
     printf("%c\n", 81);//这⾥的81是字符Q的ASCII码值,也是可以正常打印的
     return 0;
    }
    
  • 可打印字符展示:

  • #include 
    int main()
    {
     int i = 0;
     for (i = 32; i <= 127; i++)
     {
     printf("%c ", i);
     if (i % 16 == 15)
     printf("\n");
     }
     return 0;
    }

    (这段程序中使用到的for循环未学习可以暂且不看,只需参考程序结果即可)

  • 结果

  • 从零开始的C语言学习第一课:C语言常见概念_第7张图片

  • 10. 字符串和\0

  • C语⾔中如何表⽰字符串呢?使⽤双引号括起来的⼀串字符就被称为字符串,如:"abcdef",就是⼀个 字符串。

  • 字符串的打印格式可以使⽤ %s 来指定,也可以直接打印如下:

    #include 
    int main()
    {
     printf("%s\n", "hello C");
     printf("hello c");
     return 0;
    }
  • 对于字符串"abcdef",我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏⼀个 \0 的 转义字符, \0 是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者 strlen() 计算字符串⻓度的时候,遇到 \0 的时候就⾃动停⽌了。

  • 11. 转义字符

  • 也许在前⾯的代码中你看到 \n , \0 很纳闷时啥。其实在字符中有⼀组特殊的字符是转义字符,转义 字符顾名思义:转变原来的意思的字符。
  • ⽐如:我们有字符 n ,在字符串中打印的时候⾃然能打印出这个字符,如下:
    #include 
    int main()
    {
     printf("abcndef");
     return 0;
    }
  • 输出的结果:从零开始的C语言学习第一课:C语言常见概念_第8张图片
  • 如果我们修改⼀下代码,在 n 的前⾯加上 \ ,变成如下代码:
    #include 
    int main()
    {
     printf("abc\ndef");
     return 0;
    }
    
  • 输出的结果:从零开始的C语言学习第一课:C语言常见概念_第9张图片
  • 我们可以看到修改的前后代码输出的结果,截然不同的,那这是为什么呢? 这就是转义字符的问题, \n 是⼀个转义字符表示换⾏的意思,我们可以简单的理解为 \ 让 n 的意思 发⽣了转变, n 本来是⼀个普通的字符,被 \ 转义为换⾏的意思。
  • C语⾔中像这样的转义字符还有⼀些,具体:
  • 从零开始的C语言学习第一课:C语言常见概念_第10张图片
  • 从零开始的C语言学习第一课:C语言常见概念_第11张图片
  • 全转义字符参考:https://zh.cppreference.com/w/c/language/escape

一些作者想说的话:

这个系列会一直更新,如果有什么错误也可以提出来,大家一起进步,加油!

你可能感兴趣的:(从零开始的C语言学习(全干货,精炼总结),c语言,学习)