(本文示例代码环境为 VS2017下纯C代码 ,C++因为类型检测增强,代码会直接标红,需要强转才能运行)
1.指针
1.1指针简介
指针是一种数据类型,自身占用内存空间(win32平台,所有指针占用4字节内存空间),指针存储的 值 是内存地址的编号。
指针变量指向谁,就把谁的地址赋值给指针变量。指针通过 * 解引用,操作的是指针变量指向的内存空间,可以实现 取值 和 间接赋值 。
1.2指针的声明和使用
在指针声明时,* 号表示所声明的变量为指针。
在指针使用时,* 号表示操作指针所指向的内存空间。
易错点: * 只能用来操作指针。
用一级指针接收二级指针的值,并不能实现二次解引用。
用二级指针接收一级指针的值,同样不能实现二次解引用。
**示例1:**一级指针接收并操作二级指针的值
int main() {
int a = 10;
int *p1 = &a;
int *p2 = &p1; //q2为一级指针
int **p3 = &p1; //q3为二级指针
//p2和p3保存的值相等,但是p2未一级指针,只能解引用一次
printf("%d\n", **p3);//此处正常输出10
printf("%d\n", **p2);//err "*"的操作数必须是指针(vs2017报错提示)
re