Hello,C(1)

本文是对C语言基础知识的总结,包括预处理、编译、汇编和链接的过程,以及进程地址空间的分布。讨论了不同数据类型如整型、浮点型和字符型的细节,还有类型转换、输入输出函数scanf和printf的使用。此外,还提到了运算符、表达式和内存管理的相关概念。
摘要由CSDN通过智能技术生成

前言

该系列主要是对C语言各个知识点的一些个人总结,并没有记录具体的代码,如果想详细的学习C语言还是推荐学习一些经典的教程;但如果只是想回顾一下C语言的体系,还是可以参考一下的

C语言简介

  1. C语言移植性强,但不能跨平台,因为C除了文件操作外,没有涉及操作系统硬件资源接口,比如进程调度、网络通信,这些接口均为每个操作系统独有的

  1. Java虽然可以跨平台,但C语言执行效率高并且可以通过指针访问物理地址

vs编译过程

预处理-编译-汇编-链接

预处理

.h文件通过预处理将变量、函数名、常量生成.c文件,与原本的.c文件共同生生.i文件

编译

.i文件通过编译生成汇编语言文件.s

汇编

.s通过汇编生成目标文件.obj

链接

.obj链接库文件生成可执行程序.exe

调试窗口设置

  1. 调试中打开监视、调用堆栈、内存

  1. 在监视中取地址,然后拖入内存,可以看到该变量的内存地址

进程地址空间

从低地址空间0x00000000到0xFFFFFFFF依次为代码段、数据区、堆空间、栈空间、内核区

数据类型

  1. 命名变量时,不要与关键字重名,生僻的关键字有:register、volatile

常量

  1. 整型、实型、字符型常量在编译时直接编入代码段,字符串常量存在字符串常量区

  1. 符号常量:#define PI 3,在程序中如果多次用到一个常量,用define的方法来现实,便于修改

  1. 字符串常量以"\0"结尾,C语言没有定义字符串变量的关键字

  1. 浮点常量默认按double运算

变量

变量名实际上是一个地址

整型变量

  1. 程序运行时,内存称为进程地址空间。程序编译完后,开始执行时,会被放入进程地址空间的代码段区域,执行到哪句,PC指针就指向哪句代码

  1. 因特尔CPU为小端存储,如存0x7b,内存显示7b000000

  1. 通过程序员计算器可以验证对应进制的转换结果

  1. 补码的作用:CPU只能做加法,通过补码(取反加1)实现了减法、乘法、除法

  1. int4字节、short2字节、long4-8字节,当心溢出,如果超出long的范围,用大整数加法

浮点型变量

  1. 浮点型数据有两种表示方式,分别为小数形式:0.123,指数形式:3e-3

  1. 注意精度丢失

字符型变量

  1. 以'\'开头的称为转义字符,'\n’换行、‘\0’空字符,用于标识字符串的结尾,不是空格

  1. 一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII 码值放到存储单元中,可以通过格式化为字符串得到不同的结果

类型转换

当类型不一致时,可以用强制类型转换

常用的数据输入、输出函数

  1. 标准输入接口scanf、getchar,标准输出接口printf、putchar

缓冲区

  1. 一段内存空间,分为读缓冲、写缓冲,特性如下:

全缓冲: 当缓冲区满时才进行I/O操作,如对磁盘文件的读写

行缓冲:遇到换行符时才进行I/O操作(C语言在向计算机输入时会将回车符转换为换行符,在输出时把换行符转换成回车和换行两个字符),如标准输入stdin

不带缓冲:如stderr

  1. scanf 在读取整型数,浮点数,字符串时,会忽略\n(回车),空格等字符。但读取字符时,不会忽略任何字符

  1. fflush(stdin)刷新标准输入缓冲区

printf格式化为字符串

  1. printf 函数可以输出各种类型数据,整型,浮点型,字符型,字符串等,实际原理是 printf

将这些类型的数据格式化为字符串后,放入标准输出缓冲区,然后通过\n,刷新标准输出,

推到屏幕上

运算符与表达式

  1. 左值:赋值符号左边的东西

右值:赋值符号右边的东西

  1. sizeof是字节运算符

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值