• 初识C语言(1)


    这是对C语言的大概了解

    一、什么是C语言

    对于日常生活中,任何人交流的会通过中文,英文…来交流,这些都是语言,而计算机语言就是任何计算机交流的语言(C语言,c++,java,Python…),这些都是计算机语言,而C语言就是计算机语言的一种。

    二、使用vs2019创建项目

    2.1、创建项目

    1、打开vs2019
    在这里插入图片描述
    创建新项目
    在这里插入图片描述
    下一步
    在这里插入图片描述
    点击创建,这样项目就创建好了

    2.2、添加头文件

    头文件——>.h文件(文件名.h)
    在这里插入图片描述

    2.3、添加源文件

    源文件就是.c文件(文件名.c)
    在这里插入图片描述
    上面的图中的 源.cpp ,pp代表plus plus, 这是c++的源文件

    三、第一个代码

    #include
    int main()
    {
    	printf("hello word");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1、先写main函数
    在这里插入图片描述
    2、在写函数主体
    在这里插入图片描述
    3、添加头文件
    在这里插入图片描述
    4、写完代码之后就可以执行代码了
    在这里插入图片描述
    看结果
    在这里插入图片描述

    四、main函数的特点

    1、一个程序里面有且只有一个main函数
    在这里插入图片描述

    2、程序的是从main函数的第一行开始执行的
    在这里插入图片描述
    3、main函数是程序执行的入口

    五、计算机的单位

    bit 计算机存储的都是二进制数0/1,bit是计算机最小的单位
    byte = 8bit
    1kb = 1024byte
    1mb = 1024 kb
    1gb = 1024mb
    1tb = 1024gb
    1pb = 1024 tb
    在这里插入图片描述

    六、数据类型

    int main()
    {
    	printf("%d\n",sizeof(char));
    	printf("%d\n", sizeof(short));
    	printf("%d\n", sizeof(int));
    	printf("%d\n", sizeof(long));
    	printf("%d\n", sizeof(long long));
    	printf("%d\n", sizeof(float));
    	printf("%d\n", sizeof(double));
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这些变量都是所占空间的大小
    在这里插入图片描述

    char 字符类型
    short 短整型
    int 整型
    long 长整型
    long long 长长整型
    float 单精度浮点型
    double 双精度浮点型
    在这里插入图片描述
    sizeof();这个函数求得是所占空间的大小
    开辟的空间大小是个根据你的电脑是32位的还是64位的

    七、变量,常量

    生活中的有些值是不变的(比如:圆周率,性别(?),身份证号码,血型等等)
    有些值是可变的(比如:年龄,体重,薪资)。
    不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

    7.1、变量的分类

    7.1.1、局部变量

    一个变量定义在函数内部的就叫做局部变量,也可以说是定义在大括号内部的变量,
    在这里插入图片描述

    7.1.2、全局变量

    在这里插入图片描述
    定义在函数外面的变量,或者是大括号外面的变量就是全局变量

    7.1.3、局部变量和全局变量名字相同时

    局部变量优先
    在这里插入图片描述

    7.2、例如:两数相加

    int main()
    {
    	int num1 = 10;
    	int num2 = 100;
    	int sum = 0;
    	sum = num1 + num2;
    	printf("sum = %d\n",sum);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里是引用

    7.2.1、vs2019中使用scanf遇到的问题(scanf输入函数)

    int main()
    {
    	int num1 = 0;
    	int num2 = 0;
    	int sum = 0;
    	scanf("%d %d",&num1,&num2);
    	sum = num1 + num2;
    	printf("sum = %d\n", sum);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    当然,这里也可以自己输入数值来计算,这里要用到scanf这个函数
    #define _CRT_SECURE_NO_WARNINGS 1在这里插入图片描述

    每次写代码都要添加这句代码那就很麻,我们要的是在添加源文件的时候自动添加这句代码
    在这里插入图片描述

    为什么使用scanf函数不安全,而要加上 #define _CRT_SECURE_NO_WARNINGS 1 这句代码

    int main()
    {
    	char ch[5] = {0};
    	scanf("%s",ch);
    	printf("%s\n",ch);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意看上面这段代码,如果在vs2019这和编译器里面使用,不加这句代码 #define _CRT_SECURE_NO_WARNINGS 1 可能就会报错
    在这里插入图片描述

    7.3、变量的作用域和生命周期

    7.3.1、作用域

    1. 局部变量的作用域是变量所在的局
      在这里插入图片描述
    1. 全局变量的作用域是整个工程。
      在这里插入图片描述

    7.3.2、生命周期

    变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

    1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
    2. 全局变量的生命周期是:整个程序的生命周期,就是main函数的生命周期,main函数结束了,全局变量的生命周期就结束了。

    7.4、常量

    C语言中的常量分为以下以下几种:
    字面常量
    const 修饰的常变量
    #define 定义的标识符常量
    枚举常量

    7.4.1、字面常量

    字面值常量:就是我们眼睛看到的常量,比如100,a,98这些字面值常量

    7.4.2、const 修饰的常变量

    const 修饰的常变量,本质上是一个变量,但是具有常量的属性
    在这里插入图片描述
    在这里插入图片描述

    7.4.3、#define 定义的标识符常量

    #define定义的标识符常量是作用于全局的
    在这里插入图片描述
    但是标识符常量是不能被修改的,也可以指定数组的大小
    在这里插入图片描述

    7.4.4、枚举常量

    枚举常量就是能够一一列举的常量,比如:性别(男,女),三原色(红,禄,蓝)
    使用关键字enum
    在这里插入图片描述

    八、字符串和转义字符

    8.1、字符串

    在C语言中是没有字符串这种数据类型的,"abcd"这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串
    注意:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
    在这里插入图片描述
    当我们计算字符串长度的时候,遇到\0结束
    在这里插入图片描述

    8.2、转义字符

    转义字符:就是将原本的意思所改变。比如:n --》 \n (\n代表的就是换行)
    在这里插入图片描述
    当然C语言的转义字符还有很多
    a9e94bf9af37db508052aea9.png)

    九、选择语句

    if  else
    switch
    这些都是可以实现分支选择的
    
    • 1
    • 2
    • 3

    在生活中,我们无时无刻都在面临选择,如果我好好读书,将来机会有好的工作,如果我不好好读书,将来就找不到好的的工作,那在C语言中如何实现这种逻辑呢??
    在这里插入图片描述

    十、循环语句

    在生活中,有些事是根据顺序来执行的,有些事是要进行选择的,有些事是你一直在做的
    每天都在做一件事,比如:每天都要学习,坚持不懈的学习
    这种就是所谓的循环
    在C语言中能够实现循环这种逻辑的关键字
    for
    while
    do while
    在这里插入图片描述

    十一、函数

    函数是什么?就是实现一种功能,比如:我要将两个数相加,只要输入这两个数就行了,然后就可以得到两数的合
    实现一种具体功能
    在这里插入图片描述

    十二、数组

    当我们创建变量的时候,如果创建了许多个同种类型的变量,此时就可以创建一个数组,将这些变量存起来
    数组能够存储数据类型相同的变量
    在这里插入图片描述
    C语言规定数组的每个元素都有一个下标,下标是从0开始的。
    数组可以通过下标来访问的

    在这里插入图片描述

    十三、操作符

    在这里插入图片描述

    13.1、算数操作符

    这里只讲一个 取模,取余% ,加减乘除不谈了
    除 /
    在这里插入图片描述
    取模/取余
    在这里插入图片描述

    十四、常见关键字

    auto关键字是局部变量的 局部变量定义应该是 auto int a = 10; 这样定义,但是现在省略了
    break 这是循环中使用到的 ,switch中
    case 这是搭配switch一起使用的
    char 字符类型
    const 修饰常变量
    continue 循环中使用
    default 这个在switch中使用 ,默认选项
    do
    double
    else 判断
    enum 枚举常量
    extern 声明函数的
    float
    for
    goto 循环
    if 判断
    int
    long
    register 寄存器关键字
    return
    short
    signed 这是限制有符号好无符号
    sizeof
    static 静态
    struct 结构体
    switch
    typedef 类型重定义
    union 联合体
    unsigned 无符号整型
    void
    volatile
    while

    在这里插入图片描述

    14.1、typedef关键字

    在这里插入图片描述

    14.2、static关键字

    14.2.1、static修饰局部变量

    static修饰局部变量,出了函数的范围,此时局部变量不会销毁,所以进入函数的时候变量的值是上一次的值
    static修饰局部变量,改变了局部变量的生命周期,但是作用域还是局部的
    这里是引用

    14.2.1、static修饰全局变量

    全局变量本身是具有外部链接属性
    但是static修饰全局变量,会使得全局变量失去外部链接属性变成内部链接属性
    所以static修饰的全局变量,只能在自己所在的.c文件中使用
    在这里插入图片描述

    14.2.1、static修饰函数

    函数本身是具有外部链接属性
    但是static修饰函数,会使得函数失去外部链接属性变成内部链接属性
    所以static修饰的函数,只能在自己所在的.c文件中使用
    这个和修饰全局变量差不多的

    十五、源文件(test.c)编译链接生成可执行文件(test.exe)

    在这里插入图片描述

    十六、#define定义常量和宏

    16.1、#define定义常量

    在这里插入图片描述

    16.1、#define定义宏

    代码简单的时候是不会用到宏的,这是视情况而定的,宏的替换是在预编译这个阶段发生的
    在这里插入图片描述

    十七、指针

    17.1、内存

    内存是电脑上特别重要的存储器、
    所以为了有效的使用内存,就把内存划分成一个个小的内存单元。
    在这里插入图片描述

    现在很多电脑的内存都是4G,8G,16G的
    那这些是内存地址是怎么分配的,该如何编号的呢?
    这些内存就像是地址一样,每一个内存单元都拥有自己的编号,就像生活中的地址一样。

    17.1.1、内存的单位

    内存的单位
    在这里插入图片描述

    17.1.2、内存的地址(内存单元的编号)怎么产生

    计算机中将内存划分成很多个内存单元,每个内存单元都应该有一个地址
    在32位的计算机中就有32根地址线,每根地址线都只会输入0/1这样的二进制数
    在这里插入图片描述

    17.1.3查看内存地址

    这里是引用

    17.2、指针

    这里是引用
    此时我们通过指针变量pa就可是找到a的地址
    哪有如何的到a的值呢??
    *解引用操作符,通过解引用操作就可以得到a里面的值
    解引用就是通过地址找到内存里面的值
    在这里插入图片描述

    17.3、指针的大小

    我们知道计算类型的大小,要先直达这个变量里面存的内容有多大,指针里面存的是地址,地址是由计算机的地址线决定的,在32位的计算机中,有32根地址线,所以地址的大小是32位的0/1二进制序列的大小。
    在这里插入图片描述

    18、结构体

    在生活中有很多种类型是用基本类型定义的,比如说钱int,float,double…
    一本书的名字cha[]
    但是还有很多是用基本类型定义不了的,比如说一本书,一本书有书名,价格,书号…
    关于这类复杂的类型就用到结构体来定义,结构体是我们自己定义的类型
    在这里插入图片描述

    结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
    比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
    这里只能使用结构体来描述了

    struct Book
    {
    	char name[20];  //书的名字
    	float price;  //书的价格
    	char num[20];  //书的书号
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    通过结构体的方式就可以描述一本书了
    那该如何去访问结构的属性呢??
    比如:想要知道书的名字,价格,书号
    在这里插入图片描述

    通过学习,C语言还有一个操作符没有讲 -> 就是这个箭头
    在这里插入图片描述

  • 相关阅读:
    〖Python 数据库开发实战 - Python与Redis交互篇④〗- 利用 redis-py 实现集合与有序集合的常用指令操作
    Zookeeper的数据结构以及常用命令使用
    【Rust】包和模块,文档注释,Rust格式化输出
    Kubernetes概念详解之:subPath字段的使用原理及案例分析
    Windows10 子系统 (WSL) 或 docker wsl 模式 修改虚拟磁盘目录
    Mac:如何配置java和maven环境变量
    vue全局事件总线是什么?有什么用?解决了什么问题,与pinia有什么区别?
    Vue系列之数组更新检测
    数据库系统原理与应用教程(072)—— MySQL 练习题:操作题 121-130(十六):综合练习
    【FPGA教程案例40】通信案例10——基于FPGA的简易OFDM系统verilog实现
  • 原文地址:https://blog.csdn.net/ryy1999/article/details/126003297