c语言重要知识点总结

本文总结了C语言的关键知识点,包括关键字如sizeof、static、基本数据类型等,符号的运算优先级,预处理中的宏定义和内存对齐,以及指针和数组的使用,内存管理的注意事项。特别强调了野指针、静态变量的作用、数组名和指针的区别以及内存分配函数malloc的使用。
摘要由CSDN通过智能技术生成

1 关键字

1.1 sizeof

sizeof是关键字,不是函数

1.2 static

static两个作用:限制作用域(本文件),延长生命周期

  • 静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使用extern声明也没法使用他。
  • 静态局部变量:由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值

静态函数:作用域仅限于本文件

1.3 基本数据类型

float 4byte, double 8byte

1.4 变量命名规则
  • 所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词
  • 定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据
1.5 signed

编译器缺省默认情况下数据为 signed 类型

1.6 switch case

case后面只能是整型或字符型的常量或常量表达式(想想字符型数据在内存里是怎么存的)

1.7 if else

在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数

1.8 void

void*指针,任何类型的指针都可以直接赋值给它,无需进行强制类型转换,“空类型”包含“有类型”

1.9 const
  • const修饰的只读变量必须在定义的同时初始化
  • 先忽略类型名(编译器解析的时候也是忽略类型名),我们看const离哪个近。“近水楼台先得月”,离谁近就修饰谁。
    const int *p; // const 修饰*p, p是指针,*p是指针指向的对象,不可变
    int const *p; //const 修饰*p,p 是指针, *p 是指针指向的对象,不可变
    int *const p; /const 修饰 p, p 不可变, p 指向的对象可变
    const int *const p; //前一个 const 修饰“, 后一个 const 修饰 p,指针 p 和 p 指向的对象都不可变
1.10 union

在 union中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址

2 符号

  • 逻辑运算符||的条件只要有一个为真,其结果就为真;只要有一个结果为假,其结果就为假
  • 左移和右移:当为正数时, 最高位补 0;而为负数时,符号位为 1,最高位是补 0 或是补 1 取决于编译系统的规定。 Tu rbo C 和很多系统规定为补 1
  • 左移和右移的位数不能大于数据长度,不能小于0
  • “ +”号的优先级比移位运算符的优先级高
2.1 运算优先级

1 []高于*,比如int *a[];
2 函数()高于*,比如 int *fp();
3 ==和!=高于位运算,比如val & mask != 0;
4 ==和!=高于赋值运算符,比如c = getchar() != EOF
5 算术运算符高于赋值运算符,比如 msb << 4 + lsb

3 预处理

另外 ANS I 标准 C 还定义了如下几个宏:
_LINE_ 表示正在编译的文件的行号
_FILE_ 表示正在编译的文件的名字
_DATE_ 表示编译时刻的日期字符串,例如: “25 Dec 2007

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值