当前位置: 首页 > article >正文

C 语言(基础笔记)

C 语言

  • 重点-核心-本质
  • 计算机基础
    • 内存:外存与CPU的桥梁
    • 数据储存:二进制和字符编码
    • 数据“交互”:编译链接
      • 编译(compile)
      • 链接(link)
      • C语言主流编译器
  • C语言程序
    • 引子
    • 变量和数据类型
    • 数据类型
      • 概述
    • 小结
      • 字符型和字符串
      • 整数(short、int、long)
      • 小数(float、double)
    • 输入与输出
      • printf()
      • scanf()
    • 运算符
    • 循环和选择
      • if
      • switch case 语句
      • 条件运算符?:
      • while 循环
      • do while 循环
      • for 循环
    • 循环控制:break和continue
    • 数组array
      • 一维数组
      • 二维数组
      • 字符数组/字符串
      • 字符数组/字符串处理函数
      • ...
    • 函数
    • 变量的作用域
      • 理解函数
    • C语言预处理命令
      • #include
      • #define
    • 指针
      • 定义
      • 数组指针
      • 指针的应用
    • 结构体
      • 结构体
    • 一些补充
    • C语言文件操作
      • 概述
      • 文件流的打开和关闭

重点-核心-本质

  • 内存
  • 进程
  • 线程

计算机基础

内存:外存与CPU的桥梁

(1)物理构成
内存条——元器件组成——0V(断电)或5V(通电)——0(表示断电)或1(表示通电)

即内存条由上亿个电子元器件组成,它们组成电路的电压有0V和5V两种:0V表示断电,用0表示;5V表示通电,用1表示。

1、 通过电路来控制这些元器件的通断电, 会得到很多 0、1 的组合。例如, 8 个元器件有 28=256 种不同的组合,
2、 1 个元器件称为 1 比特(Bit)1 位,8 个元器件称为 1 字节(Byte)

(2)内存的作用

程序在内存中运行(而不是在硬盘中)

对于读写速度, 内存 > 固态硬盘 > 机械硬盘
机械硬盘是靠电机带动盘片转动来读写数据的, 而内存条通过电路来读写数据,电机的转速肯定没有电的传输速度(几乎是光速)快。虽然固态硬盘也是通过电路来读写数据,但是因为与内存的控制方式不一样,速度也不及内存。

其过程如下:

  • 载入内存:加载器(Loader)将硬盘中的数据复制到内存,接着交给CPU来处理
  • 处理数据:CPU 直接从内存中读取数据,处理完成后将结果再写入内存。(如有需要,会将数据复制到硬盘进行保存)

(2)虚拟内存

当程序运行需要的空间大于内存容量时,会将内存中暂时不用的数据再写回硬盘;需要这些数据时再从硬盘中读取,并将另外一部分不用的数据写入硬盘。
这样,硬盘中就会有一部分空间用来存放内存中暂时不用的数据。这一部分空间就叫做虚拟内存(Virtual Memory)

在这里插入图片描述

数据储存:二进制和字符编码

(1)二进制
计算机要处理的信息是多种多样的,如数字、 文字、 符号、 图形、 音频、 视频等,,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式(0 和 1 序列)来表示。

(2)字符编码
将文字与二进制进行对应的规则就叫做字符编码:

  • ASCII编码:针对英文
    标准 ASCII 编码共收录了 128 个字符(空闲了一个比特位),其中包含了 33 个控制字符(具有某些特殊功能但是无法显示的字符)和 95 个可显示字符。
  • GB2312 编码GBK 编码:针对中文
  • Unicode编码全世界的文字

数据“交互”:编译链接

  • 编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。
  • 链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程

编译(compile)

编译:.c文件(源代码)——>目标文件/临时文件/中间文件(.obj文件-Visual C++或者.o文件-GCC)

C 语言的编译器有很多种,不同的平台下有不同的编译器:

  • Windows 下常用的是微软开发的 Visual C++,它被集成在 Visual Studio 中
  • Linux 下常用的是 GUN 组织开发的 GCC
  • Mac 下常用的是 LLVM/Clang,它被集成在 Xcode 中(Xcode 以前集成的是 GCC,来由于 GCC 的不配合才改为 LLVM/Clang,LLVM/Clang 的性能比 GCC 更加强大

链接(link)

链接其实就是一个“打包”的过程,它将所有二进制形式的目标文件(object file)和系统组件组合成一个可执行文件。
完成链接的过程也需要一个特殊的软件,叫做链接器(Linker)

链接:目标文件 + 系统组件 ——> 可执行文件

C语言主流编译器

如果不是特别强调,一般情况下我们所说的“编译器”实际上也包括了链接器。

C语言的编译器主要有两大块:桌面操作系统和嵌入式操作系统。

在这里插入图片描述

C语言程序

引子

(1)基础
头文件:.h文件(索引函数库)
main()函数:主函数,一个程序有且只有一个,是程序的入口函数
语句结束:必须使用 ;
返回值:int 型

(2)名词解释
puts = output string
printf = print format
scanf = scan format

(3)模板

#include<stdio.h> // include:复制头文件int main()
{puts("C语言学习");return 0;
}

变量和数据类型

变量赋值在内存中找一块区域用来存放数据,并用变量名命名这个内存空间。(多次连续赋值给同一个变量,会导致之前的数据消失)

注意,C语言定义变量时,要指明数据的数据类型

数据类型除了指明数据的①解释方式,还指明了②数据的长度。-下面有讲)

注:C语言变量与Python变量的区别

  • C语言中,定义一个变量是将值放到变量盒子里面去;
    在这里插入图片描述
    赋值b=a,就是新建一个盒子,然后把值赋值一份放过去,特点是:两个值之间完全独立。

  • Python中,赋值变量就是标签的意思。
    在这里插入图片描述
    上面的 a=2 之后,1就没有归属了,就无法调用了,python的基于引用的内存管理器很快就会把这个对象的内存给清理掉的。

数据类型

概述

(1)数据类型
在这里插入图片描述
数据类型除了指明数据的解释方式,还指明了数据的长度

(2)数据类型长度

所谓数据长度(Length),是指数据占用多少个字节

  • 定义变量时还要指明数据的长度

  • 在 C 语言中,每一种数据类型所占用的字节数都是固定的,知道了数据类型,也就知道了数据的长度

    在这里插入图片描述

附: 静态类型语言、动态类型语言
要了解什么是动态语言,要首先了解“类型检查”。

静态类型语言,即在编译期间确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。C、C++、Java、C#和Scala都是静态类型语言。

说大白话,意思就是动态类型语言可以直接进行变量赋值(在变量赋值之前不需要定义其变量类型),而静态类型语言必须先由人工定义变量类型,而后才能对其进行赋值。

http://www.lryc.cn/news/2414439.html

相关文章:

  • 最新d3dx9_33.dll文件丢失解决
  • 《社交网络》中Facemash算法分析
  • Android 版本区别
  • 网络通信原理——OSI模型、TCP/IP模型、数据通信原理
  • 常见的用户密码在后台数据库中加密存储方式
  • 办公楼综合布线系统详细设计方案
  • 路由器的类型及衡量路由器性能的主要参数指标
  • html引入html include_CSS的引入方式笔记
  • 为什么在Spring应用中不建议使用属性注入(Field Injection)
  • 本地代码与托管代码
  • mysqlbinlog -v与-vv --base64-output 与不加的区别
  • 海外代理IP如何获取?
  • 个人博客系统源码 溯雪Sxlog轻博客源码 PHP开源 简洁干净轻博客源码
  • WinPE能破解Windows的密码,这样Windows就不安全吗?
  • 十种不同风格的网站导航菜单
  • nagios安装教程
  • jQuery.validationEngine.js学习
  • 网站建设经验分享:如何进行网站内容更新与维护?
  • MYSQL入门-mysql的下载与安装(1)
  • 文件粉碎机(file pulverizer) v4.2 怎么用
  • 马士兵servlet、jsp、oracle视频地址
  • winform控件之maskedTextBox
  • 2022年网络安全面试题总结
  • linux pci串口驱动下载,PCI串行口驱动下载_PCI串行口驱动官方下载-太平洋下载中心...
  • 谏言工信部:网站备案系统miibeian.gov.cn实在难用!
  • 《益智之迷:战神的挑战》资料与心得集合
  • 2.springboot配置jpa
  • php怎么弄钓鱼,QQ_PHP钓鱼源码
  • 探察MFC中框架宏(RUNTIME_CLASS等)的秘密
  • 极域电子教室—解控