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
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值