本文主要是介绍C语言随笔集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
注意 strlen 和 sizeof 的区别
- strlen计算的是第一个 ‘\0’ 前面的字符的个数
- sizeof计算的是占用的内存空间的大小只和定义时有关
- C语言中,输出double类型(双精度)和float(单精度)时, 编译器默认精确到小数点后六位输出
默认输出的是6位小数,不足6位,以0补齐,超过6位按四舍五入截断。 - 字符串数组在内存中存储,不管大端还是小端, 都是首个字符先存储,ASII值转换成二进制存储相应的比特位即可
C语言的本质是操作内存
内存分配的方式:
- 1.定义变量时,由操作系统根据变量的类型在栈区分配
- 存储类型 数据类型 变量名;
- 2.程序员使用malloc手动在堆区分配
C语言变量的数据类型:
基本类型:
字符类型 char %c 1B
短整型 short %d 2B
整型 int %d 4B
长整型 long %ld 32位:4B 64位:8B
长长整型 long long %lld 8B
单精度浮点型 float %f 4B
双精度浮点型 double %lf 8B
多精度浮点型 long double %llf 32位:12B 64位:16B
枚举类型 enum
构造类型:
数组
结构体 struct
共用体(联合体) union
指针类型:
作用:
决定从他保存地址开始,能操作几个字节--------------->操作空间的大小
空类型:
void
void*
存储类型:
- const 用来修饰变量时,表示只读变量 const int a =10;
- a的值不能修改
- const 修饰指针时:
看const 和 * 的位置关系
- 1.const在的左边,表示修饰的是p
const int *p;
int const *p;
不能通过指针p修改指向空间的内容
但是指针的指向是可以修改的
- 2.const在*的右边,表示修饰的是p
int * const p;
指针的指向不能修改
但是允许通过指针修改指向空间的内容
- 3.*的左右两边都有const 说明都不能修改
const int * const p;
- static关键字有两个作用:
1.延长局部变量的生命周期------------->从最近的{}结束至整个程序结束
2.限制作用域:static修饰的变量或者函数只能在当前文件中访问;
- extern
声明一个函数或者变量在其他的.c文件中定义;
如果一个.c文件中需要使用另外一个.c文件中的变量或者函数;
需要在第一个.c文件中使用extern声明;
- register
register修饰的是一个寄存器类型的变量,被执行的效率高;
CPU取数据的优先级(寄存器 > 高速缓存(cache)> 内存)
但是CPU的寄存器的个数是有限的
所以,把所有的变量都定义成寄存器变量是不现实的--------->实际开发时,一般不用
注意:register修饰的变量是不能取地址的;
- volatile
防止编译器优化
要求CPU每次取数据都必须在内存上取
使用场景:
1.中断状态的寄存器
2.多线程访问同一个变量
- auto
声明一个变量时自动类型
定义局部变量时不写存储类型,默认的都是自动类型非自动类型的变量:
全局变量
static修饰的局部变量
分文件编程:
.c源文件:存放函数的定义;.h头文件:存放函数的声明和类型的定义;mai
这篇关于C语言随笔集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!