cstddef内的各项定义
| 标识符 | 意义 |
|---|---|
| NULL | 指针值 用来表示未定义或者无值 |
| nullptr_t | nullptr类型(始于C++11) |
| size_t | 一种无正负号类型用来表示大小(比如元素的个数) |
| ptrdiff_t | 一种带正负号的类型 用来表示指针之间的距离 |
| max_align_t | 所有环境之最大齐位 所对应的类型 |
| offsetof(type,mem) | 表示成员mem在某个struct或者union中的偏移量 |
在C++中给指针赋值最好使用nullptr
cstdlib中的定义
常量EXIT_SUCCESS和EXIT_FAILURE用作exit()的实参也可以用作main的返回值
| 定义 | 意义 |
|---|---|
| EXIT_SUCCESS | 程序正常结束 |
| EXIT_FAILURE | 程序异常结束 |
| exit(int status) | 退出程序并清理static对象 |
| quick_exit(int status) | 退出程序时以at_quick_exit()清理 |
| _Exit(int status) | 退出程序而不清理 |
| abort() | 退出程序,在某些系统上可能导致崩溃 |
| atexit(void(*func)()) | 退出程序的时候调用func |
| at_quick_exit(void(*func)()) | 在quick_exit()上调用func |
中的定义式
| 定义 | 意义 |
|---|---|
| memchr(const void * ptr,int c,size_t len) | 在ptr所指的前len个byte中找到字符c |
| memcmp(const void * p1,const void * p2,size_t len) | 比较p1,p2中的前len个byte |
| memcpy(void *toptr,const void * fromptr,size_t len) | 将fromptr所指的前len个byte复制到toptr中 |
| memmove(void *toptr,const void * fromptr,size_t len) | 将fromptr所指的前len个byte复制到toptr中(区域可以重叠) |
| memset(void *ptr,int c,size_t len) | 将ptr所指的前len个byte复制为字符c |
由于目标空间和源空间存在重叠,则无法按照预期逻辑进行赋值,故此后面设计出了memmove
函数memmove和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的
如果源空间和目标空间出现重叠,就得使用memmove函数处理