C语言笔记
C语言手册和系统函数手册
安装开发手册页
1 | sudo apt-get update |
manpages-dev 包含了C标准库函数的手册,而 manpages-posix-dev 则包含POSIX标准函数的详细信息。
查看函数手册
安装后,即可使用 man 命令查看具体函数。
1 | # 查看系统调用 socket 的手册 |
手册中会详细列出函数的原型、参数、返回值、所属头文件以及相关函数。
搜索函数
函数名的关键词,可以使用 man -k 进行搜索
1 | # 搜索所有与 "socket" 相关的手册页 |
浮点数存储格式
1 | #include <iostream> |
| 结果: |
|---|
| 68 e8 9f e0 e2 41 8f 40 68 e8 9f e0 e2 49 8f 40 b8 78 c8 42 e2 49 8f 40 b8 78 ca 42 e2 49 8f 40 |
按照结果查看,浮点数的存储是大端模式
C语言控制硬件读写操作
控制底层读写数据或操作
总结:当写内部NOR FALSH,例如NOR FALSH,每次写入数据是4字节,创建存储数组时候,最好是按照4字节创建,如果按照字符创建,可能数据不是对齐状态,创建在一个奇数地址,导致数据存储的时候,报异常,导致程序异常,这时候,要么选择按照4字节格式创建数组,按字节创建时候,需要设置4字节对齐操作 __attribute__((aligned(4)))
混合定义C语言
1 | // Extended Memory Management |
struct EMM (*slots1[256])[256] 表示:
slots1是长度为 256 的指针数组;- 每个指针指向
EMM类型的 256 元素数组
关于const修饰变量
| const 写法 | 含义 | 赋值规则 |
|---|---|---|
const int a = 10; | const 修饰变量 a,a 是常量 | 只能在定义时初始化,之后不能修改 a 的值 |
const int* p = &a; | const 修饰指针指向的内容,p 是指针变量 | 指针 p 本身可以被赋值(可以指向不同地址),但不能通过 p 修改指向的内容 |
int* const p = &a; | const 修饰指针本身,p 是常量指针 | 只能在定义时初始化,之后不能修改 p 的指向,但可以通过 p 修改指向的内容 |
const int* const p = &a; | 双重 const,指针和内容都不可改 | 只能在定义时初始化,之后 p 的指向和指向的内容都不能改 |
取反某一个位的数据
使用 异或^
1 | a = a^(1<<10) |