C语言重难点归纳(1)

161 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情

1、数据类型

  • 编译器指定出的数据类型,为了更好的管理内存

2、C语言标准

  • ANSI 美国国家标准协会制定出的标准,在89年制定出第一套标准 C89标准

3、typedef使用

 3.1主要用途:给类型起别名
 
 3.2可以简化 struct 关键字
 
 3.3可以区分数据类型
 
 3.4提高代码移植性

4、void的使用

4.1无类型,不可以创建变量,无法分配内存

4.2限定函数返回值

4.3限定函数中的参数列表

4.4void * 万能指针,可以不需要强制类型转换 给其他指针赋值

5、sizeof的使用

  • 本质: 不是函数,而是一个操作符
当统计类型占的内存空间时候,必须要加 小括号

当统计变量占内存空间时候,可以不加小括号
  • 返回值类型是 无符号整型 unsigned int

  • 可以统计数组的长度

注意数组名称如果在参数列表中,会退化为指针,指向数组的第一个元素

6、变量的修改方式

  • 直接修改

  • 间接修改

1、通过指针对内存进行修改

2、对自定义数据类型进行了修改

7、内存分区

7.1运行前

7.1.1代码区

1.共享的

2.只读的

7.1.2数据区

1.`data` 已初始化的全局变量、静态变量、常量

2.`bss`  未初始化的全局变量、静态变量、常量

7.2运行后

7.2.1栈区

1.属于先进后出的数据结构

2.由编译器管理数据开辟和释放

3.变量的生命周期在该函数结束后自动释放掉

7.2.2堆区

1.容量远远大于栈

2.没有先进后出这样的数据结构

3.由程序员管理开辟和管理释放
  `malloc`  `free`  
  
  记住手动开辟的要手动释放