数据类型
运算符
变量
指针
1.指针是一个变量,用来存放内存单元的地址.
2.指针的大小固定4/8个字节(32位平台/64位平台).
3.指针的类型决定了指针进行[+/-]n的步长.
4.指针的类型决定了在解引用时可以访问的空间大小.
第3点和第4点均与空间大小有关
整型指针
字符指针
数组指针
指向数组的指针
指针数组
存放指针的数组
int *parr[3]
函数指针
指向函数的指针
((void ()())0)() void ( signal(int, void ()(int)))(int)
函数指针数组
```
int Add(int x,int y)
{
return x + y;
}
int Sub(int x,int y)
{
return x - y;
}
int Mul(int x,int y)
{
return x * y;
}
int Div(int x,int y)
{
return x / y;
}
// 函数指针数组
int (*parr[4])(int,int) = { Add, Sub, Mul, Div };
```
指向函数指针数组的指针
数组
数组名表示数组首元素地址,但有两个例外
1.sizeof(数组名), 计算整个数组大小. 数组名表示整个数组.
2.&数组名, 取整个数组的地址. 数组名表示整个数组.
还有一个特例
1.当数组作为函数参数进行传递时, 该数组自动退化为同类型的指针. [案例代码]
如上图
允许指向数组元素的指针与指向数组最后一个元素后面内存位置的指针进行比较
不允许指向数组元素的指针与指向数组第一个元素前面内存位置的指针进行比较
函数
结构体
枚举
联合体/共用体
字符串
字符串长度
strlen
字符串查找
strstr
strtok
错误信息报告
strerror
长度不受限制的字符串函数
strcpy
strcat
strcmp
长度受到限制的字符串函数
strncpy
strncat
strncmp
内存操作函数
memcpy
memmove
memset
memcmp
动态内存分配
预处理指令
makefile
[ 心得 ]
作为左值的条件
1.存储位置
2.类型(即访问空间大小)
特殊: 即便只知道存储位置, 对指针进行间接访问(解引用)操作的时候, 指针类型决定访问空间大小.
书籍
第6章 P101