C语言知识点

数值类型的关键字

char 字符型 short短整型 int整型 long长整型 float浮点型 double双精度浮点型

unsigned无符号 signed有符号 struct 结构体 union 共用体 enum枚举 void

const用法

用const修饰变量:定义时就必须初始化,以后不能再更改;

用const修饰形参:该形参在函数里不能被改变;

用const修饰类成员函数:该函数对成员变量只能进行只读操作,就是const类成员函数是不能修改成员变量的数值的;

const修饰变量const int a:使变量相当于“常量”;

const修饰指针类型const int *p:不能改变指针变量指向的内存地址的值,但可以改变指向的地址;

const修饰指针变量 int *const p:不能改变指针变量指向的内存地址,但可以改变指针指向地址的值;

const int *const p:不能改变指针指向的地址,也不能改变指针指向地址的值;

修饰谁谁不变;

static用法

static修饰局部变量:使其变为静态存储方式(静态数据区),那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中;

static修饰全局变量:当源程序定义了全局变量时,其他外部程序可以通过extern关键字引用此变量,如果加了static关键字,则其他文件不可连接或引用该变量。即全局变量则对当前源程序有效;

volatile作用

当一个值可能随时会发生改变时,编译器就不能去假设这个变量,优化器每次用到这个变量都必须去内存重新读取,而不是使用保存在寄存器里边的值。

typedef作用

通过typedef 可以为已有类型取一个新的名字。

C代码编译成可执行文件4步骤

预处理:宏定义展开,头文件展开,条件编译等,同时将代码中的注释删除,这里不会检查语法

编译:检查语法,将预处理后文件编译生成汇编文件

汇编:将汇编文件生成目标文件(二进制文件)

链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行文件程序中去

C语言的内存分区

可参考C语言内存分区

栈区(stack):存放函数的参数值、返回值、局部变量等

堆区(heap):用于动态内存分配

全局区/静态区

未初始化数据(bss):全局未初始化、静态未初始化数据

初始化数据(data):全局初始化、静态初始化数据

文字常量区(data):字符串常量

代码区(text):可执行文件的二进制代码(函数)

栈是向下生长,堆是向上生长,具体可以参考堆和栈的区别

计算机字符存储形式

  • 在计算机中,数值一律用补码来存储
  • 正数的原码,反码,补码,都一样
  • 负数的反码符号位不动,其他位求反
  • 负数的补码为它的反码加1
  • 补码符号位不动,其他位求反,最后整个数加1,得到原码

指针分类

地址0-255都是系统保留的,不能读,也不能写

野指针:是指向一个未知的内存空间,可能在读写的过程中出现错误

空指针:是指向内存编号为0(NULL)的空间,操作该内存空间会报错,一般用在程序条件判断

万能指针: void *p=&a, 赋值的时候需要强制转换成a的类型

函数的声明,定义,调用

extern:引用同一文件或不同文件的变量或者函数,变量必须是全局变量。

在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,所以它们本身实际意义上存在的,因此,形参不能提前赋值。

形参出现在函数的定义中,在整个函数体内都可以使用,离开函数则不能使用

实参出现在主调函数中,不一定是主函数,进入被调函数之后,实参则不能使用,即形参的改变不会改变实参

实参变量对形参变量的数据传递的“值的传递”,即单向传递,只由实参传给形参,而不能形参传回来实参

当实参变量对形参变量的传递是“地址传递”时,形参所做的所有改变都会改变实参的值。

在调用函数时,编译系统临时给形参分配存储单元。在调用结束后,形参单元才被释放

实参单元与形参单元是不同的单元。调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参变量。实参单元仍保留并维持原值。因此,在执行一个被调函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。

exit()函数:关闭所有文件,终止正在执行的文件

所在头文件stdlib.h

exit(1) 表示异常退出,这个1是返回操作系统的

exit(x)(x不为0)都表示异常退出

exit(0)表示正常退出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值