自学视频《郝斌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

【郝斌C ST】02的更多相关文章

  1. 郝斌老师的SQL教程

    时隔两年,重拾数据库编程.郝斌老师的sql教程通俗易懂,用作复习简直不能太赞.

  2. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

  3. [C]郝斌C语言课程大纲及笔记

    本笔记整理于郝斌老师C语言课程,做学习参考之用. 1.[编程笔记]第一章 C语言概述 2.[编程笔记]第二章 C语言预备知识 3.[编程笔记]第三章 运算符与表达式 4.[编程笔记]第四章 流程控制 ...

  4. 郝斌–SQL Server2005学习笔记

    数据库(Database)狭义上是指存储数据的仓库,广义上包含对数据进行存储和管理的软件(DBMS)和数据本身.数据库由表.关系和操作组成. 一.数据库简介 1.为什么需要数据库 数据库简化了对数据的 ...

  5. 郝斌C语言代码

    #include<stdio.h> int main() { ; printf("%#x\n",a); ; } /* output 0xf; */ //(15)10= ...

  6. 郝斌 SqlServer2005 学习笔记

    1.0 什么是数据库 狭义:存储数据的仓库. 广义:可以对数据进行存储和管理的软件以及数据本身统称为数据库. 另外一种说法:数据库是由表.关系.操作组成. 2.0 为什么要学习数据库 几乎所有的应用软 ...

  7. C语言-郝斌笔记-007是否为素数

    是否为素数 # include <stdio.h> bool IsPrime(int val) { int i; ; i<val; ++i) { ) break; } if (i = ...

  8. C语言-郝斌笔记-006排序及查找

    1. int partion(int *a, int low, int high) { int value = a[low]; int t; while (low < high) { while ...

  9. C语言-郝斌笔记-005菲波拉契序列

    菲波拉契序列 /* 菲波拉契序列 1 2 3 5 8 13 21 34 */ # include <stdio.h> int main(void) { int n; int f1, f2, ...

  10. C语言-郝斌笔记-004判断是否为回文数

    判断是否为回文数 # include <stdio.h> int main(void) { int val; //存放待判断的数字 int m; ; printf("请输入您需要 ...

随机推荐

  1. Vue.js 动画与过渡效果实战

    title: Vue.js 动画与过渡效果实战 date: 2024/6/4 updated: 2024/6/4 description: 这篇文章介绍了如何在网页设计中使用过渡动画和组件效果,以及如 ...

  2. Qt OPC UA通信

    介绍 OPC UA全称Open Platform Unified Architecture,开放平台统一架构,是工业自动化领域通用的数据交换协议,它有两套主要的通信机制:1.客户端-服务器通信:2.发 ...

  3. OpenCV简单实现AR需用到的算法函数介绍

    目前的AR需求(想要达到的目标) 公司目前的需求是要能够指定一个物体开始追踪,将一张预先准备好的图像覆盖在被追踪的物体上, 然后镜头偏转缩放各类操作,再转回来仍然可以识别到,并且同样依旧覆盖图片到先前 ...

  4. C#.NET 微信上传电子小票

    HttpWebRequest 时,不认图片的Content-Type.Content-Type 实际是有传的. 报错内容:{"code":"PARAM_ERROR&quo ...

  5. 【译】Visual Studio 17.10 发布了新版扩展管理器

    我们将更新的扩展管理器带给所有用户!在过去的一年里,我们已经将更新后的扩展管理器作为可选的预览功能提供,并一直期待您的反馈.基于您令人难以置信的反馈,我们现在准备从 Visual Studio 17. ...

  6. golang 泛型的格式写法

    Go语言中的泛型(Generics)是在 Go 1.18 版本中引入的一个重要特性,它允许你编写可重用的代码,而不需要为每种数据类型重复编写相同的逻辑. 泛型通过参数化类型(type paramete ...

  7. TiKV 源码分析之 PointGet

    作者:来自 vivo 互联网存储研发团队-Guo Xiang 本文介绍了TiDB中最基本的PointGet算子在存储层TiKV中的执行流程. 一.背景介绍 TiDB是一款具有HTAP能力(同时支持在线 ...

  8. 幻想领域图床系统V1.2正式版发布

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 幻想领域图床系统V1.2正式版发布 日期:2018-4-1 ...

  9. 用CSS3绘制iPhone手机

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 用CSS3绘制iPhone手机 日期:2017-7-3 阿 ...

  10. CLR via C# 笔记 -- 数组(16)

    1. 数组隐式继承 System.Array,所以数组是引用类型.变量包含的是对数组的引用,而不是包含数据本身的元素. 2. 数组协变性.将数组从一种类型转换为另一种类型. string[] sa = ...