C语言初识

1、C语言是什么

C语言是众多计算机语言的一种。

2、编译器

2.1、原理

C语言是一门编译型 计算机语言,C语言源代码是文本文件 ,本身无法执行。必须通过编译器 的翻译,和链接器 的链接,生成二进制的可执行文件,机器才能执行可执行文件。

C语言代码是放在**.c**文件中的。

一个工程一般会有多个源文件组成。下图为源程序经过编译器和链接器处理的过程。

注:

  1. 每个源文件(.c) 经过编译器的处理后,生成对应的目标文件(.obj)
  2. 多个目标文件和库文件 经过链接器的处理后生成对应的可执行文件(.exe)

于是,我们 windows 系统电脑上就生成了用C语言程序生成的可执行文件。

2.2、vs 2022

vs 2022是一种集成开发环境

vs 2022的优点:

  1. 主流,企业中较为常用。
  2. 包含编辑器编译器调试器,功能强大。
  3. 直接安装,不需要再额外配置环境。
  4. 有中文翻译安装包,初学者友好。

缺点:占用内存多。(多吗?)

3、VS项目、头文件、源文件

vs 2022上写代码要创建项目,选好地址直接创建即可。

头文件 的后缀是 .h源文件 的后缀是 .c

4、第一个C语言程序

5、 main 函数

main 函数是程序的入口 , main 函数有且只有一个 , main 函数前没有分号

以上图为例, main 函数前有一个 int ,说明此时 main 函数结束时,返回一个整型的值, 刚好 return 0 与之相呼应。

6、库函数

为了不再实现常用的代码,C语言标准规定了一组函数,这些函数组成了一个函数库,被称为标准库 。这些函数被称为库函数

举个例子, printf( ) 就是一个库函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印。

cpp 复制代码
#include<stdio.h>

int main()
{
    int n = 10;
    printf("%d\n", n);//打印整型
    printf("%c\n", 'Q');//打印字符
    double m = 10.0;
    printf("%lf\n", m);//打印双精度浮点型

    return 0;
}

7、关键字

注意三点:

  1. 关键字都有特殊的意义
  2. 创建标识符时,不能与关键字重复
  3. 关键字不能自己创建

关键字有32个,学到了就记忆,没必要刻意记忆。

8、字符和ASCII编码

字符,如 a, Q, @, # 等。C语言中,用单引号将字符括起来,如 'a', 'Q', '@', '#' 。

假如我们每个人给每一个字符编写一个二进制序列,这个序列就叫做编码 。为了方便,美国国家标准协会(ANSI)出台了标准ASCII编码。如下图。

参考网址:ASCII 图表 - cppreference.com

最好掌握:

  • 字符 A~Z 的ASCII值从 65~90
  • 字符 a~z 的ASCII值从 97~122
  • 对印的大写字母比小写字母的ASCII值小32
  • 数字字符 0~9 的ASCII值从 48~57
  • 换行符 \n 的ASCII值是 10
  • ASCII值为 0~31 的32个字符,无法在屏幕上打印

用 %c 指定格式:

cpp 复制代码
#include<stdio.h>

int main()
{
    printf("%c\n", 'Q');
    printf("%c\n", 81);

    return 0;
}

可打印字符展示:

cpp 复制代码
#include<stdio.h>

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

    return 0;
}

9、字符串和\0

9.1、字符串

使用双引号括起来的字符就被称为字符串。

字符串用 %s 指定格式,也可以直接打印

cpp 复制代码
#include<stdio.h>

int main()
{
    printf("%s\n", "Hello");
    printf("Hello");

    return 0;
}

(补充)用 scanf 函数输入并输出字符串:

9.2、 \0

C语言的字符串中,末尾隐藏了一个字符: \0 。字符 \0 是字符串的结束标志。

对于 " abcdef ",我们看到的是六个字符。但是,当我们在 vs 2022 调试模式的监视窗口下,我们发现了未显示的 \0 。\0 是字符串的结束标志。所以 printf( ) 函数打印字符串时,遇到 \0 就停止了。

来写一段代码,验证 \0 的功能:

我们调试一下,会发现 arr2 相比 arr1 ,少了 \0 :

结果:

arr1 正常打印,而 arr2 打印出了乱码。

如果我们给 arr2 加上 \0 ,同时在一个字符串里加上 \0 ,结果会怎样?

由此, \0 的重要性可见一斑。

11、转义字符

顾名思义:转变原来的意思的字符。

如:

  • \0 :字符串的结束标志
  • \n :换行
  • \ddd :d d d 表示1~3个八进制的数字。
  • \xdd :d d 表示两个十六进制的数字。

12、语句和注释

语句也是看到就学,不需要刻意记;注释则要写得能方便其他人阅读代码。

相关推荐
侯小啾2 小时前
【03】C语言 强制类型转换 与 进制转换
c语言·数据结构·算法
云知谷3 小时前
【经典书籍】C++ Primer 第15章类虚函数与多态 “友元、异常和其他高级特性” 精华讲解
c语言·开发语言·c++·软件工程·团队开发
czy87874759 小时前
用C语言实现代理模式
c语言·代理模式
Yupureki9 小时前
从零开始的C++学习生活 13:红黑树全面解析
c语言·数据结构·c++·学习·visual studio
AAA小肥杨12 小时前
cmake使用教程
c语言·c++·cmake
.小小陈.13 小时前
数据结构3:复杂度
c语言·开发语言·数据结构·笔记·学习·算法·visual studio
云知谷14 小时前
【经典书籍】C++ Primer 第16章模板与泛型编程精华讲解
c语言·开发语言·c++·软件工程·团队开发
屁股割了还要学14 小时前
【Linux入门】常用工具:yum、vim
linux·运维·服务器·c语言·c++·学习·考研
Jm_洋洋14 小时前
【Linux系统编程】程序替换:execve(execl、execlp、execle、execv、execvp、execvpe)
linux·运维·c语言·开发语言·程序人生
小莞尔15 小时前
【51单片机】【protues仿真】基于51单片机秒表计时器系统(带存储)
c语言·stm32·单片机·嵌入式硬件·物联网·51单片机