【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(一)

简介: 就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。

前言


就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。


本章从如何写主函数开始讲起,对C语言基础知识点进行蜻蜓点水地介绍,想看详细讲解教学请订阅专栏!专栏连接:《维生素C语言》


图标说明


❓ 表示问题


📚 表示知识点


❕ 表示注意


🔍 表示比较


🔨 表示操作/解决方案


💬 代码块


💭 思考/思考题


🚩 运行代码


✅ 正确


❌ 错误


❎ 可以但是不建议


🅰 .c文件B


🅱 .c文件B


📺 系统环境/编译器/环境


🔺 表示总结


🚫 表示禁止


📜 表示建议


📌 注意事项


🔑 表示解析、答案


💡 解决方案


💀 死循环


🐞 BUG


💊 DEBUG


🚀 提交


📦 封装


⚡ 代码优化


👆👇👈👉 方位


## 注:本图标适用于本人所有C语言系列博客!


一、如何写代码


0x00 首先写主函数

❓ 何为main函数?


main函数,又称主函数,是程序执行的起点。


1. 主函数是程序的入口


2. 主函数有且只有一个


📚 一个工程中可以有多个“.c文件”,但是多个“.c文件”中只能有一个“main 函数”

0daf9e557e5b780c0ed48eae09fa465f_20210913134417974.png


0x01 然后写代码

💬  "你好,世界!"


#include <stdio.h> //头文件
int main()
{
    printf("hello world!\n");
    return 0;
}

0x02 最后运行程序

🔨 编译 + 链接 + 运行代码


快捷键: Ctrl + F5( VS2013 )


[调试] -> [选择' 开始执行(不调试)']

❓ “是不是有什么一闪而过了?”


因为程序执行得太快,所以没有看到结果。


为了看到结果,我们需要设置一下 VS2013 的属性 ( VS2019不需要设置项目属性 )


[解决方案资源管理器] -> [右键项目名称] -> [属性] -> [链接器] -> [系统]
-> [子系统] -> [选择' 控制台(/SUBSYSRTEM:CONSOLE) ']

🚩 运行结果如下:

ffa66d6aba704cc0e32c56cf4b320610_20210913135618200.png


二、数据类型


0x00 基本类型

📚 这里先做些简单的介绍:

5c2f8c3738ce868c35a26e1888bf39e6_20210913135730896.png


💬 基本数据类型的使用方法:


int main()
{
    char ch = 'a';
    int age = 20;
    float weight = 50.8;
    double d = 0.0;
    return 0;
}

0x01 格式说明

📚 格式说明由“%”和格式字符组成:

fd826cc171f6da73c9ddbd14afffc1d9_20210913135835365.png

💬 演示:


int main()
{
    printf("%d\n", 100);
    printf("%c\n", 'a');
    float foo = 5.0;
    printf("%f\n", foo);
    double pi = 3.14;
    printf("%.2lf\n", pi); // .xf(x为小数点保留几位数)
    char str1[] = "hello";
    printf("%s\n", str1);
    int a = 10;
    printf("%p\n", &a);
    return 0;
}


🚩 运行结果: 100 a 5.000000 3.14 hello 0000000000061FE04


0x02 数据类型的大小

📺 32位系统下:

46b2a02e3c8e00bf9d04afaf33ee718b_20210913140010646.png


📚 关键字 sizeof :获取数据在内存中所占用的存储空间,以字节为单位计数

ec2a320acfd5795fe6fbc74dcbeac16a_20210913140051858.png

💬 使用方法演示:


int main()
{
    char a = 'A';
    printf("%d\n", sizeof(a))
    printf("%d\n", sizeof a) //求变量时可省略括号 ✅
    printf("%d\n", sizeof(char));
    printf("%d\n", sizeof char); //error!但是求字符类型时不可省略 ❌
    return 0;
}

🚩 运行结果:1


💬 使用 sizeof 求元素个数:


int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    printf("%d\n", sizeof(arr)); //计算的是数组的总大小,单位是字节
    printf("%d\n", sizeof(arr[0])); //计算的是数组首字符大小
    int sz = sizeof(arr) / sizeof(arr[0]);
    printf("%d\n", sz);
    return 0;
}
🚩 运行结果: 40  4  10


📚 计算机中的单位: bit - 比特位


计算机中识别二进制:1&0         8进制:0-7        10进制:0-9

8be66e3338e551df61fcc93c1e113fbd_20210924131725842.png


三、变量与常量


0x00 创建变量

1debaebf433848054950c8679c3f54ee_20210924131916405.png

💬 代码演示:


#include <stdio.h>
int main()
{
    int age = 20;
    double weight = 62.5;
    age = age + 1;
    weight = weight - 10;
    printf("%d\n", age);
    printf("%lf\n", weight);
    return 0;
}

0x01 全局变量和局部变量

3d04b97ee3e0a7a839dcc03ca589bb96_20210924132019485.png


💬 局部变量和全局变量的名字相同时,局部变量优先,对局部影响:


int var = 100;
int main()
{
    int var = 10;
    printf("%d\n", var);  
    return 0;
}

🚩 运行结果: 10


0x02 scanf 函数

256502846d097ca035bcc42b3c91eb37_20210924132148749.png

💬 使用方法演示:


int main()
{
    int a = 0;
    scanf("%d", &a);
    printf("%d", a);
    return 0;
}

0x03 变量的使用

💬 使用方法演示:写一个代码求两个变量的和


int main()
{
    int a = 0;
    int b = 0;
    int sum = 0;
    scanf("%d %d", &a, &b);
    sum = a + b;
    printf("sum = %d\n", sum);
    return 0;
}
❗ 如果编译器发出了警告,说 scanf 不安全,在代码前面添加
#define _CRT_SECURE_NO_WANRINGS 1
即可,当然还有其他方法可以解决,这里就不细说了。
🚩 运行结果如下:(假设输入了 1 2)
sum = 3


0x04 作用域和生命周期

📚 作用域(scope)


程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用 的 而限定这个名字的可用性的代码范围就是这个名字的作用域。


全局变量的作用域是整个工程。


局部变量的作用域是变量所在的局部范围。


📚 生命周期:


变量的生命周期:变量的创建和销毁之间的时间段


局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。


全局变量的生命周期:整个程序的生命周期。


💬 局部变量的生命周期:


int main()
{
    {
        int a = 10;
        printf("%d\n", a);
    }
    printf("%d\n", a); //error 生命周期结束了
}

💬 全局变量的生命周期


//声明一下变量
extern int g_val;
int main()
{
    printf("%d", g_val);
}

0x05 常量

📚 定义:C语言中常量和变量的定义的形式有所差异


C语言的常量分为以下几种:


① 字面常量:直接写


② const 修饰的常变量:用 const 定义


③ #define 定义的标识符常量:宏定义


④ 枚举常量:可以一一列举的常量


💬 字面常量:


int main()
{
    3.14;
    10;
    'a';
    "abcdef";
}

💬 const 修饰的常量:


int main()
{
    const int num = 10;
    num = 20; //error, 不能修改
    printf("num = %d\n", num);
}

🚩 运行结果: 10


💬 #define 定义的标识符常量:


#define MAX 10000  // 不写=,不加分号!
int main()
{
    int n = MAX;
    printf("%d\n", n);
}

🚩 运行结果:10000


💬 枚举常量:


//性别
enum Sex {
    //这种枚举类型的变量的未来可能取值
    //枚举常量
    MALE = 3, //赋初值
    FEMALE,
    SECRET
};
int main()
{
    enum Sex s = MALE;
    printf("%d\n", MALE);
    // MALE = 3 error 不可修改
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    return 0;
}


📌 注意事项:


const 只是一个有常属性的变量,本质上仍然为变量!arr[], 数组的大小必须是常量!


int main()
{   
    const int n = 10; //n是变量,但是又有常属性,所以我们说n是常变量
    int arr[n] = {0}; // 仍然不可以,因为n是变量,只是有常属性而已
    return 0;
}

💬 #define 定义的可以,宏定义用得最多的地方是在数组中用于指定数组的长度:


#define N 10
int main()
{
    int arr[N] = {0};
    return 0;
}

📌 注意事项:


枚举常量虽然是不能改变的,但是通过枚举常量创造出来的变量是可以改变的!


enum Color 
{
    // 枚举常量
    RED,
    YEELOW,
    BULE
};
int main()
{
    enum Color c = BULE; //我们创建一个变量c,并将BULE赋给它
    c = YEELOW; //这时将YEELOW赋给它,完全没有问题 ✅
    BULE = 6; //error!枚举常量是不能改变的  ❌
    return 0;
}


相关文章
|
6月前
|
C语言
C语言初阶⑧(结构体)知识点和笔试题
C语言初阶⑧(结构体)知识点和笔试题
63 0
|
1月前
|
C语言
C语言学习笔记-知识点总结上
C语言学习笔记-知识点总结上
81 1
|
6月前
|
编译器 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(下)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
42 0
|
6月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
42 0
|
6月前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
49 0
|
4月前
|
存储 编译器 C语言
|
5月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
49 3
|
5月前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
41 1
|
4月前
|
前端开发 C语言
C语言08----注释扩展知识点,注释快捷键:ctrl+k,ctrl + C,取消快捷键 ctrl + K,ctrl + U
C语言08----注释扩展知识点,注释快捷键:ctrl+k,ctrl + C,取消快捷键 ctrl + K,ctrl + U
|
5月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)