C语言知识点总结——待补充

本文详细介绍了C/C++编程中的数据存储,包括原、反、补码的概念,大小端存储模式,以及浮点数的存储方式。还讨论了数组、指针的使用,如数组指针、二维数组和函数指针,并讲解了常见库函数的应用,如字符串函数、内存函数和类型转换函数。此外,深入探讨了结构体的内存对齐规则,枚举和联合的使用,以及内存管理和文件操作。同时涵盖了程序的编译链接过程和关键字的作用,如volatile、extern和static。
摘要由CSDN通过智能技术生成

1 数据的存储

1.1 整形的存储

1.1.1 原、反、补码

原码:将整数按照正负数的形式翻译成二进制,最高位表示符号位,0为正,1为负
反码:正数=原码,负数=原码除符号位按位取反
补码:正数=原码,负数=反码+1
数据存放内存中存放的是补码

1.1.2 大小端存储

大端存储模式:数据的低位保存在内存的高地址中,数据的高位保存在内存的低地址中
小端存储模式:数据的低位保存在内存的低地址中,数据的高位保存在内存的高地址中

1.1.3 赋值的截断和提升问题

1.1.4 常量

(1)字面常量
(2)const修饰的常变量
(3)#define定义的标识符常量
(4)枚举常量

1.2 浮点数的存储

2 数组和指针

2.1 数组和指针

2.1.1 数组

2.1.2 指针

2.1.3 联系和区别

2.2 指针数组

2.3 数组指针

2.4 数组名的意义

2.5 二维数组和二级指针

2.6 函数指针

2.7 笔试题

3 常见的库函数

3.1 字符串函数

3.1.1 strlen

计算字符串的长度
strlen遇上转义字符
strlen和sizeof的区别

3.1.2 strcpy

3.1.3 strcat

3.1.4 strstr

3.2 内存函数

3.2.1 memcpy

3.2.2 memmove

3.2.3 memcpy

3.2.4 memset

3.3 整形和字符串转换函数

3.3.1 atoi

3.3.2 itoa

3.4 笔试题

库函数的使用和模拟实现

4 自定义类型详解

4.1 结构体

结构体的内存对齐规则(空间换时间)

  1. 第一个成员在与结构体变量偏移量为0的地址处。
  2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
    对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。
    VS中默认的值为8
  3. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。
  4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整
    体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍
// 12
struct S1
{
	// 偏移量从0开始
	char c1;//0偏移量
	//下一个是1偏移量 不是4的倍数
	// 浪费3个字节
	int i;//4-7
	//8
	char c2;//8
	// 12
};
// 8
struct S2
{
	char c1;//0
	//1
	char c2;//1
	//2
	int i;//4-7
	// 8
};
// 6
#pragma pack(1)
struct S3
{
	char c1;//0
	//1
	char c2;//1
	//2
	int i;//2-5
	// 6
};
#pragma pack()

设置默认对齐数

#pragma pack(n) //设置默认对齐数为n
#pragma pack() //还原为默认

4.2 枚举

优缺点

4.3 联合

大小计算

5 内存管理

5.1 malloc、calloc、realloc的区别

5.2 结合操作的进程地址空间,考察程序中变量的存储区域

6 文件操作

6.1 文件读写常见的系统接口及使用

6.2 二进制文件和文本文件

定义
区别

7 程序的编译和链接

7.1 C/C++的编译链接的过程

(1)预处理:宏替换;条件编译;去掉注释;展开头文件
(2)编译:检查语法生成汇编代码
(3)汇编:将汇编代码翻译成机器码,生成目标文件
(4)链接:将目标文件链接到一起,生成可执行程序

7.2 头文件ifndef/define/endif的作用

7.3 #include<filename.h>和#include"filename.h"的区别

7.4 宏的优缺点

C++用什么技术替代宏

8 关键字

8.1 volatile

8.2 extern

8.3 static

修饰变量和函数
(1)修饰局部变量,改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束时生命周期才结束
(2)修饰全局变量,使得这个全局变量只能在本源文件内使用
(3)修饰函数,使得这个函数只能在本源文件使用

8.4 const

8.5 typedef

类型定义,可以理解为类型重命名

// 把int重命名为myint
typedef int myint;

8.6 sizeof

以字节形式给出了操作数的存储大小,操作数可以是类型、指针、数组、函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值