C语言学习记录_持续更新

2024.04.16

1、*****system函数

  需要头文件#include <stdlib.h>
  作用是在一个子进程中运行shell命令

2、*****gcc编译过程:预处理,编译,汇编,链接

第一步预处理:宏定义展开,头文件展开,条件编译,删除注释。不做语法检查。(详见main.i)
第二步编译:检查语法,将预处理后的文件编译成汇编文件
第三步汇编:将汇编文件生成目标文件(二进制文件)
第四步链接:把库链接到可执行程序中去,生成可执行文件

gcc -E main.c -o main.i
gcc -S main.i -o main.s
gcc -c main.s -o main.o
gcc main.o -o main.out

3、寄存器、缓存、内存三者的关系

从远近看:cpu《--》寄存器《--》缓存《--》内存 ----硬件

4、数据类型

作用:编译器预算对象分配的内存空间大小

2024.04.17

*****变量 与 常量

const修饰的变量称为 常变量 

常量:

    是只读的固定值,在程序运行期间不会改变,不能被程序修改的量,可以是任意类型
    一般出现在表达式货赋值语句中
    分为整型常量、实型常量、字符型常量、字符串常量
    
    两种定义常量的方式:
                  ----使用 #define 宏定义:#define 常量名 值
                  ----使用const关键字:const 数据类型 常量名 = 值
    分类:
    ----字面常量:
              直接出现在代码中的数值,例如整数、浮点数、字符或字符串,不需要声明,如 42、3.14、‘A’、“Hello”。
    ----使用const关键字的常量:
              通过 const 关键字声明的具有常量特性的变量,使其值不可修改,如 const int MAX_VALUE = 100。
    ----符号常量:
              通过 #define 预处理指令定义的标识符,用于表示一个固定值,提高代码的可读性和可维护性
    ----枚举常量:
              通过 enum 关键字定义的一组常量,它们通常表示相关的命名值。              

2024.04.19

变量:

    在程序运行期间可以改变
    数据类型:可以理解为创建变量的模具: 固定大小内存的别名;
            ----基本类型----整型:short、int、long、long long(占用空间大小:short<=int<=long<long long)
                            字符型:char
                            实型(浮点型):float、double

sizeof:

    		不是函数,不需要包含任何头文件,功能是计算一个数据类型的大小,单位是字节,
            返回的占用空间大小是为这个变量开辟的大小
            返回类型是unsigned int/ unsigned long
            
            数组名只有在
                  *sizeof 运算符
                  *取址 & 运算符
                  *字符串常量初始化的数组 Str[]=“abcdef”
                  这三种情况下不会发生退化(array decay)
                  其余情况下调用数组名,都会退化成指向数组首地址的指针
                  在c语言中,数组名在函数的调用中退化成了一个指针,对函数的参数使用Sizeof,sizeof获取的结果就是指针的大小,而不是数组本身的大小
                  
            指针的sizeof
                  指针是用来记录另一个对象的地址,所以指针的内存大小就等于计算机内部地址总线的宽度。
                  对一个地址来取大小呢,如果是32位系统的话即为4,如果是64位系统的话为8,
                  所以呢,在函数中sizeof获取的是指针的长度而不是数组的长度
                  指针变量的sizeof值与指针所指的对象没有任何关系

整型:

      有符号和无符号整型取值范围:                       
                              数据类型           占用空间     取值范围
                                  short                 2 字节       -32768 到 32767 (-2^15 ~ 2^15-1)
                                  int                     4 字节       -2147483648 到 2147483647 (-2^31 ~ 2^31-1)
                                  long                  4/8 字节       -2147483648 到 2147483647 (-2^31 ~ 2^31-1)
                                  unsigned short   2 字节       0 到 65535 (0 ~ 2^16-1)
                                  unsigned int     4 字节       0 到 4294967295 (0 ~ 2^32-1)
                                  unsigned long    4 字节       0 到 4294967295 (0 ~ 2^32-1)                       

字符型:

        char:
        本质就是一个 1 字节大小的整型
        在给字符型变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来
        字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII 编码放到变量的存储单元中
        重点记住:32(空格)开始,可以从键盘上找到。
                ascii  ’0‘对应48,’A‘对应65,’a‘对应97,大小写字母相差32
                  转义字符

浮点型:

           double比float更精准,打印格式:%lf,%f
           
           float的指数部分有8bit,有符号型最高位代表正负,对应的指数范围为-128~128,所以取值范围为:
                                                              -2^128到2^128,约等于-3.4E38 — +3.4E38
                                                              
           double占用8个字节(64位系统),的指数范围是-1023到1024,其取值范围为±1.7E+308到±1.7E-308
           
           大小范围主要取决于指数所占的bit位数。精度取决于尾数位数
           
           类型          符号位  指数位   尾数    有效位数
           float          1bit    8bit    23bit    log2(23)=7.22
           double          1bit  11bit    52bit    log2(52)=15.65
           long double      1bit  15bit    64bit   log2(63
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值