zoukankan      html  css  js  c++  java
  • 【郝斌C ST】02

    自学视频《郝斌C语言自学教程》 10:

    https://www.bilibili.com/video/BV1os411h77o

    C语言大纲

    - 1、简介

    - 2、基本编译知识

    - 3、数据类型

    - 4、操作符与表达式

    - 5、流程控制

    - 6、函数

    - 7、数组

    - 8、指针

    - 9、作用域和存储方式

    - 10、扩展数据类型

    - 11、字符串处理、进制转换、补码、动态内存分配 链表使用

    第一个HelloC程序的讲解

    编写源码 - 编译 - 链接【Build】生成? 生成一个后缀名为exe的可执行文件

    点击运行,并不是这个IDE在执行,是IDE请求操作系统交给CPU运行这个可执行文件

    所有的应用软件,建立在这个操作系统的基础上调用CPU运行的

    【98 & ME 版本的Windows系统是个特例,它们允许直接在硬件的基础上跑软件 ,2000之后再不能了】

    【越过操作系统直接访问硬件被视为是一个非常危险的操作】

    编程的第一步是实现数据的存储,对数据的分类:

    总体分为两种  

      基本数据类型,不可再往下细分,是数据存储的最小单位计量

        整数

          整型  int    4byte 字节

          短整型  short int  2byte

          长整型  long int  8byte

        浮点数【不能定量存储,通过浮点实现,本质是一个近似值】

          单精度浮点  float  4byte

          双精度浮点  double  8yte

        字符

          char  单个字符  1byte

          char[ ]  字符串【字符数组】

        布尔【在C种没有定义这种Boolean类型为基本数据类型,true & false 正整数和0表示】

      复合数据类型,对1个以上的基本数据类型进行整合之后的数据类型

      

    1个byte 字节占8个二进制位,从0 0 0 0 0 0 0 0到1 1 1 1 1 1 1 1

    一共可以表示256个数,也就是28-1 [-128 ~ 127] 这个范围

     

    在C中声明一个int 变量,你可以写double类型的数值赋值int,

    编译并不会提示错误,实际的程序编译之后运行,这个值会被强转成int,

    多出的小数被精度损失而不得不向下取整,也就是10

    - 字符实际上是ASCII码对应的数值,在Java中强转char为int之后可以看到对应的ASCII码值,

    但是C中不太确定了,在这里我尝试了一下,结果一样

    什么是变量?

    是保存数据的一个容器,里面存储的值存放在内存中,程序终止后,值从内存中释放销毁

      程序运行的第一件事:请求操作系统找到内存中空闲的位置

      操作系统将一个空闲的内存空间,分配给这个变量i,这两者产生映射关系【关联关系】

      也就是声明一个变量,这个变量被操作系统引导指向了一个内存中的一个闲置的内存空间

      把值赋值给变量,就是通过变量的这个引导指向,把值存放进了这个内存空间【存储单元】

    变量的本质是指向内存中的某一段存储空间

    1 程序 【请求】操作系统 寻找可用内存单元

    2 操作系统寻找闲置内存单元,分配空间

    3 操作系统将那一段内存单元的地址和变量的标识进行绑定【不知道怎么说,就是形成了一个映射关系,一个指向】

    4 程序的执行才可以进行

    变量为什么要初始化?

    初始化,就是必须要赋值

    在CLion中并没有报错,只是编写的时候提示了一句,变量没有初始化就被使用了

    在视频演示版的C99标准中,输出结果是一个int类型的最小值还是最大值来着

    这个CLion我点选C11标准,输出结果始终是一个0,可能已经更改了初始化的规则了

    什么叫释放?

    释放就是,一个内存单元在某一个程序使用完毕之后,可以被另外的一个程序继续使用

    也就是这个内存单元的使用权限解除了,可以被下一个程序使用

    a变量指向的空间是空闲的,但不代表此空间是没有值的,内容可能是某一个程序退出之后遗留的值【垃圾值/随机值/不确定值】

    【详细深入,操作系统,关键字:系统分配表,对内存的使用状态进行了判断,1即使用中,0即闲置 ,释放即是操作系统对这个状态位进行操作】

    1 这个变量正在被操作系统中某一运行的程序使用

    2 程序结束了,操作系统收回对内存单元的使用权限,注意!是收回对内存单元的使用权限,其存储的值并没有被清空!!

    3 新的程序开始指向,操作系统分配的是内存单元的使用权限,给这个新程序使用!!!

    填充值

    如果一个变量没有初始化就被使用,那么会编译器为这个变量填充一个缺省值,当然这里的是0

    目的是为了提示开发者这个变量没有被初始化

    进制: 逢一定数值之后前进一个位数

    计算机语言:二进制

    人类使用的是:十进制

    为了实际需要又补充了八进制和十六进制

    C语言的规定:

    八进制的数值必须以0作为开头,

    十进制的数值不需要修饰,本身即可

    十六进制的数值必须0X 或者0x

     汇编语言:

    1010B 后缀B 表示Binary  二进制  

    1357O 后缀O 表示Octal  八进制

    1057D 后缀D 表示Decimal  十进制

    3FB9H 后缀H 表示Hex  十六进制

    为什么采用二进制作为计算机语言?

    因为二进制在硬件上容易实现,开即1,关即0,一切事物就分成两种状态

    看进制的诀窍:

    推算十进制:

    数字的第二位,因为第一位永远不会是进制数,逢N进1就表示了第二位数进制了几次,随后以此类推叠加

    例如 71234O 八进制,就表示十进制是 7123 * 8 + 4 , 也就是进制了七千一百二十三次的八再加上4

     

  • 相关阅读:
    java基础部分的一些有意思的东西。
    antdvue按需加载插件babelpluginimport报错
    阿超的烦恼 javaScript篇
    .NET E F(Entity Framework)框架 DataBase First 和 Code First 简单用法。
    JQuery获得input ID相同但是type不同的方法
    gridview的删除,修改,数据绑定处理
    jgGrid数据格式
    Cannot read configuration file due to insufficient permissions
    Invoke action which type of result is JsonResult on controller from view using Ajax or geJSon
    Entity model数据库连接
  • 原文地址:https://www.cnblogs.com/mindzone/p/12747701.html
Copyright © 2011-2022 走看看