码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 初始C语言-1(数据类型、变量、常量、变量的作用域和生命周期、字符串+转义字符+注释)


    目录

    一、C语言

     C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)

    C语言发展至今都是排行前三的计算机语言。

    随着物联网,万物互联,以及嵌入式开发和单片机开发,C语言是必然的趋势。

     C语言的标准:主流的为 C89 C90

    计算机语言的发展: 2进制 - 汇编语言 - B语言 - C语言

     二、第一个C语言程序

    C语言的代码是从main函数的第一行开始执行的main函数是程序的入口 - 有且仅有一个main函数 - 可以在任意位置

     三、数据类型

     --C语言里有哪些单位?

     --为什么出现这么多数据类型?

    四、变量

    1)变量

    1.变量的命名

    2.变量的分类

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

    1. 作用域:

    1)局部变量的作用域:是局部变量所在的局部范围

     2)全局变量的作用域:整个工程  

    2.变量的生命周期

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

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

    六、常量

    1.字面常量 

    2.const 修饰的常量:本质上是个变量,但是具有了常属性,不能被修改

    验证const 修饰的常量:本质是个变量 

    **下面的代码在支持C99的编译器上可以编译的 

     3.#define定义的标识常量

    4.枚举常量 

    枚举 - enum

    容易被一一列举出来的值:

     七、字符串+转义字符+注释

    1.字符串

    C语言表示字符:用单引 号。例如:'a'  '1'   '!'

    C语言表示字符串:用双引号。 例如:"abc"  

    注意:字符串的结束标志是一个 \0 的转义字符,不算做字符串的内容。例如:"abc"  --> a  b  c  \0 

    2.转义字符  

    常见用法:

    *特别的:三字母词:  ??后加一个字符 

    例如:??) 转义为 ]

    思考

     3.注释

    给代码进行注释,解释每段代码的意思

    用双左斜杠 // 注释单行内容 (C++的注释风格)  (推荐使用:支持嵌套)

    用 /**/  给多行注释(C语言的注释风格) (不推荐:不支持嵌套使用)


    一、C语言

     C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)

    C语言发展至今都是排行前三的计算机语言。

    随着物联网,万物互联,以及嵌入式开发和单片机开发,C语言是必然的趋势。

     C语言的标准:主流的为 C89 C90

    计算机语言的发展: 2进制 - 汇编语言 - B语言 - C语言

     二、第一个C语言程序

    C语言的代码是从main函数的第一行开始执行的
    main函数是程序的入口 - 有且仅有一个main函数 - 可以在任意位置

     写一个c代码,在屏幕上打印 hello world

    1. #define _CRT_SECURE_NO_WARNINGS 1
    2. #include
    3. //主函数
    4. int main()
    5. {
    6. //printf 是一个库函数 - C语言的标准库中的一个现成的函数,直接就能使用
    7. //功能:在屏幕上打印信息
    8. //输出函数,打印函数,使用前一定要包含头文件 stdio.h
    9. //stdio.h 标准输入输出头文件
    10. printf("hello world\n");
    11. return 0;
    12. //}

    主函数的其他写法 

    1. //推荐
    2. //int main()
    3. //{
    4. //
    5. // return 0;
    6. //}
    7. //可以这样写
    8. //int main(void)
    9. //{
    10. //
    11. // return 0;
    12. //}
    13. //古老的写法 - 不建议
    14. //void main()
    15. //{
    16. //}

     

     三、数据类型

     --C语言里有哪些单位?


    bit        - 比特
    byte    - 字节 1byte = 8bit
    KB                1KB=1024byte
    MB                1MB=1024KB
    GB                1GB=1024MB
    TB                1TB=1024GB
    PB                1PB=1024TB

    1. int main()
    2. {
    3. printf("%d\n", sizeof(char)); //1字节
    4. printf("%d\n", sizeof(short)); //2
    5. printf("%d\n", sizeof(int)); //4
    6. printf("%d\n", sizeof(long)); //4 //C语言标准:sizeof(long)>=sizeof(int)
    7. printf("%d\n", sizeof(long long)); //8
    8. printf("%d\n", sizeof(float)); //4
    9. printf("%d\n", sizeof(double)); //8
    10. return 0;
    11. }
    1. int main()
    2. {
    3. int num = 20; //向内存申请4个字节空间存储 20 这个整型数据
    4. char ch = 'b'; //向内存申请1个字节空间存储 b 这个字符数据
    5. return 0;
    6. }

     --为什么出现这么多数据类型?

    用合适的类型,存储各种数据
    内存利用率高,写代码更灵活

    四、变量

    1)变量

    1.变量的命名

    1. 由字母(包括大写和小写),下划线(_),数字组成!
    2. 不能由数字开头!
    3. 变量名不能使用关键字!
    • 长度不能超过63个字符
    • 变量区分大小写
    • 变量名尽量起的有意义
       

    2.变量的分类

    1. 局部变量:在{}内部定义的变量就是局部变量
    2. 全局变量:在{}外部定义的变量就是局部变量
       
    1. int main()
    2. {
    3. int num = 10;//num是变量,创建变量时,最好给个初始值
    4. printf("%d\n", num); //10
    5. num = 20;
    6. printf("%d\n", num); //20
    7. return 0;
    8. }

     全局变量和局部变量的名字可以相同,但是在使用时局部优先

     局部变量里的名字不能相同

    1. int num = 100;//全局变量
    2. int a = 1000;
    3. int main()
    4. {
    5. int a = 10;//局部变量
    6. printf("%d\n", a);
    7. //int a = 20;//创建的局部变量不能重名!!
    8. //printf("%d\n", a);
    9. return 0;
    10. }

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

     

    1. 局部变量的作用域:是局部变量所在的局部范围
    2. 全局变量的作用域:整个工程  (缺点是不安全)

    1. 作用域:

    1)局部变量的作用域:是局部变量所在的局部范围

    1. void test()
    2. {
    3. printf("%d\n", a);//无法使用
    4. }
    5. int main()
    6. {
    7. int a = 10;
    8. printf("%d\n", a);
    9. {
    10. int b = 20;
    11. printf("%d\n", b);
    12. }
    13. //printf("%d\n", b); //b不在作用域里,无法使用printf打印出来
    14. return 0;
    15. }

     2)全局变量的作用域:整个工程  

    1. int a = 100;
    2. void test()
    3. {
    4. printf("2:%d\n", a);
    5. }
    6. int main()
    7. {
    8. printf("1:%d\n", a);
    9. test();
    10. return 0;
    11. }
    12. //声明外部符号(当使用此工程项目的另一个文件的变量时)
    13. extern int g_val; //另一个文件下的变量g_val
    14. int main()
    15. {
    16. printf("%d\n", g_val);
    17. return 0;
    18. }

    2.变量的生命周期

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

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

    1. int main()
    2. {
    3. { //进入a的作用域,生命周期开始,再此作用域里a可以使用
    4. int a = 10;
    5. printf("%d\n", a);
    6. }//出a的作用域,生命周期结束
    7. //printf("%d\n", a); //a不在作用域里,无法使用printf打印出来
    8. return 0;
    9. }

    六、常量

    生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
    有些值是可变的(比如:年龄,体重,薪资)
    1. 字面常量
    2. const 修饰的常量
    3. #define定义的标识常量
    4. 枚举常量

    1.字面常量 

    1. //1.字面常量
    2. int main()
    3. {
    4. 100;//整型字面值
    5. 'w';//字符字面值
    6. 3.14;//浮点型的字面值
    7. "abcdef";//字符串常量
    8. return 0;
    9. }

    2.const 修饰的常量:本质上是个变量,但是具有了常属性,不能被修改

    1. //2.const 修饰的常变量
    2. int main()
    3. {
    4. const 常属性:值不能被改变
    5. const int num = 10; //本质上是个变量,但是具有了常属性,不能被修改
    6. printf("%d\n", num);
    7. num = 20; //err;无法修改值
    8. printf("%d\n", num);
    9. return 0;
    10. }

    验证const 修饰的常量:本质是个变量 

    1. //数组
    2. //const int n = 10;
    3. //int arr[n] = { 0 }; //n虽然被const修饰,具有常属性,不能被改变,但是本质上还是变量,所以不能用来指定数组的大小

    **下面的代码在支持C99的编译器上可以编译的 


        //C99中,引入了:变长数组的概念,变长数组的大小是可以使用变量来指定的,但是数据不能被初始化
        //vs2013/vs2019是不支持C99的 ;Linux系统:gcc编译器 支持C99
        int n = 10;
        int arr[n] = { 0 };     

     

     3.#define定义的标识常量

    1. //3.#define定义的标识常量
    2. #define MAX 1000 //可以在全局定义
    3. int main()
    4. {
    5. printf("%d\n", MAX);
    6. //MAX = 2000; //无法修改常量MAX
    7. #define MIN 0 //可以在局部定义
    8. printf("%d\n", MIN);
    9. int arr[MAX]; //可以运用在数组
    10. return 0;
    11. }

    4.枚举常量 

    枚举 - enum

    容易被一一列举出来的值:

    性别:男,女,保密
    三原色:RGB(红绿蓝)
    血型:A B O AB RHB

    1. //4.枚举常量
    2. //枚举 - enum
    3. //声明的一个表示性别的枚举类型
    4. enum Sex
    5. {
    6. //下面三个符号是Sex这个枚举类型的未来的可能的值
    7. //枚举常量
    8. MALE=5, //默认为0,可以赋初值
    9. FEMALE, //1
    10. SECRET //2
    11. };
    12. int main()
    13. {
    14. enum Sex s = MALE;
    15. printf("%d\n", MALE);
    16. printf("%d\n", FEMALE);
    17. printf("%d\n", SECRET);
    18. return 0;
    19. }

     七、字符串+转义字符+注释

    1.字符串

    1. C语言表示字符:用单引 号。例如:'a'  '1'   '!'

    2. C语言表示字符串:用双引号。 例如:"abc"  

    • 注意:字符串的结束标志是一个 \0 的转义字符,不算做字符串的内容。例如:"abc"  --> a  b  c  \0 

    1. #include
    2. int main()
    3. {
    4. //char c1 = 'a';
    5. //char c2 = 'b';
    6. //数组
    7. //字符数组
    8. //char arr1[] = "abc"; //调试后发现:a b c \0 共四个字符
    9. //char arr2[] = { 'a', 'b', 'c' };//调试后发现:a b c 共3个字符
    10. //printf("%s\n", arr1);//打印 abc ,打印字符串,直到\0才终止打印
    11. //printf("%s\n", arr2);//打印 abc烫烫烫bc ,打印字符串,没有找到\0是不会停下来的
    12. char arr1[] = "abc"; //调试后发现:a b c \0 共四个字符
    13. char arr2[] = { 'a', 'b', 'c' };//调试后发现:a b c 共3个字符
    14. //strlen是一个库函数,专门打印字符串长度。在求字符串长度时,统计\0之前出现的字符的个数。
    15. int len = strlen(arr1); //a b c \0
    16. printf("%d\n", len); //3
    17. len = strlen(arr2);//a b c .....\0
    18. printf("%d\n", len); //15(随机值),因为abc之后不知道\0在哪,所以一直找,直到\0才终止,说明此时\0前的字符有15个
    19. return 0;
    20. }

    2.转义字符  

     

     

    1. int main()
    2. {
    3. printf("abc\ndef");// \n - 换行
    4. //结果为:
    5. //abc
    6. //def
    7. printf("abc\0def");// \0 - 字符串结束标志
    8. //结果为:
    9. //abc
    10. return 0;
    11. }

    常见用法:

    1. int main()
    2. {
    3. printf("%c\n", 'a');
    4. printf("%c\n", '\'');//想打印 ' 这个字符时,也需要转义\'
    5. printf("%s\n", "abc");
    6. printf("%s\n", "\"");//想打印 " 这个字符串时,也需要转义\"
    7. printf("%s\n", "abc\\ndef");//想打印 abc\ndef 这个字符串时,也需要转义\为\\
    8. printf("\a");//把声音调大一点,可以听到警告蜂鸣的声音
    9. printf("ab\bcdef");//acdef ,\b - 退格,把b删掉了
    10. printf("%c\n", '\130'); //ASCII码值为88的字符 - H
    11. 八进制 130 转换为十进制 1*8^2 + 3*8^1 + 0*8^0 =64+24+0 =88
    12. printf("%c\n", '\x63');//ASCII码值为99的字符 -c
    13. 十六进制 163 转换为十进制 6*16^1 + 3*16^0 =96+3 =99
    14. return 0;
    15. }

     

    *特别的:三字母词:  ??后加一个字符 

    例如:??) 转义为 ]

    1. //三字母词
    2. //??) ---> ]
    3. int main()
    4. {
    5. printf("(are you ok??)");
    6. //想要打印(are you ok??) 变成了(are you ok]
    7. //所以在连续的?时,转义\?\?
    8. return 0;
    9. }

    思考


      

        printf("%d\n", strlen("abcedf"));                //6
        printf("%d\n", strlen("c:\test\628\test.c"));//14  

     3.注释

    给代码进行注释,解释每段代码的意思

    1. 用双左斜杠 // 注释单行内容 (C++的注释风格)  (推荐使用:支持嵌套)

    2. 用 /**/  给多行注释(C语言的注释风格) (不推荐:不支持嵌套使用)

    1. int main()
    2. {
    3. /*
    4. int a = 10; //创建一个变量a ,赋初值为10
    5. */
    6. return 0;
    7. }

     

     

     

  • 相关阅读:
    Intel汇编-变量初始赋值
    G1D21-作业-AttacKG&SVM&kg_book&偷懒哈哈哈
    Java异常编程题(巩固语法)
    C++面向对象 _ 成绩单系统
    传统加密技术(恺撒+仿射)
    MongoBd 离线安装与管理
    【Bond随你温故Azure Architecture】之HA&DR篇
    艾美捷Immunochemistry FAM FLICA Poly Caspase检测方案
    C++ //练习 15.5 定义你自己的Bulk_quote类。
    [MAUI程序设计]界面多态与实现
  • 原文地址:https://blog.csdn.net/weixin_55807049/article/details/128158215
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号