数据类型

运算符

变量

指针

1.指针是一个变量,用来存放内存单元的地址.
2.指针的大小固定4/8个字节(32位平台/64位平台).
3.指针的类型决定了指针进行[+/-]n的步长.
4.指针的类型决定了在解引用时可以访问的空间大小.

第3点和第4点均与空间大小有关

整型指针

整型指针.png

字符指针

字符串存储位置 [ 代码 ]

数组指针

指向数组的指针

演示代码 [ 代码 ]

数组指针.png

指针数组

存放指针的数组

int *parr[3]

函数指针

指向函数的指针

函数指针.png

((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 };
```

指向函数指针数组的指针

指向函数指针数组的指针.png

数组

数组名表示数组首元素地址 [ 代码 ]

数组名表示数组首元素地址,但有两个例外
1.sizeof(数组名), 计算整个数组大小. 数组名表示整个数组.
2.&数组名, 取整个数组的地址. 数组名表示整个数组.

还有一个特例
1.当数组作为函数参数进行传递时, 该数组自动退化为同类型的指针. [案例代码]

图片.png
如上图
允许指向数组元素的指针与指向数组最后一个元素后面内存位置的指针进行比较
不允许指向数组元素的指针与指向数组第一个元素前面内存位置的指针进行比较

函数

结构体

枚举

联合体/共用体

字符串

字符串长度
strlen

字符串查找
strstr
strtok

错误信息报告
strerror

长度不受限制的字符串函数
strcpy
strcat
strcmp

长度受到限制的字符串函数
strncpy
strncat
strncmp

内存操作函数
memcpy
memmove
memset
memcmp

动态内存分配

预处理指令

makefile

图片.png

[ 心得 ]

作为左值的条件
1.存储位置
2.类型(即访问空间大小)

特殊: 即便只知道存储位置, 对指针进行间接访问(解引用)操作的时候, 指针类型决定访问空间大小.

书籍第6章 P101

指针-左值右值.png