学习C语言有一道绕不开的坎那就是指针。很多初学者初次接触指针时会感到困惑看不懂地址、分不清指针变量与普通变量。但不可否认指针是C语言的灵魂依托指针我们可以高效操作内存、灵活处理数组与字符串也是后续学习结构体、动态内存、嵌入式开发的重要基础。本篇文章从零出发循序渐进梳理指针核心知识点拨开地址与指针的迷雾。 想必很多人都会有疑惑——指针到底是什么七十指针就是内存单元的编号即指针就是地址它是一类特殊的数据是具有指向意义的值。 1. 指针的定义 语法基类型 * 指针变脸名 ①基类型---表示的是指针指向的那块内存空间存储的数据类型可以是整型浮点型字符型构造类型指针类型空类型。 ② * --- 相当于是个修饰符用来说明是指针类型的变量表示此时定义的不是普通变量而是指针类型的变量。 ③指针变量名---是一个标识符命名规则和普通变量的命名规则一致。 注意基类型决定了指针变量中存放的是什么类型的地址。 2. 指针变量访问 例如int *p a通过p本身能得到地址通过地址能找到数据对应的内存空间。 指针运算符 * 也叫间接访问运算通过*p能够访问到a所在的空间。 运算过程 ①拿出p中的地址值到内存中定位 ②找到后从定位处开始偏移sizeof(基类型)大小的一块空间 ③将这块空间当做一个基类型的变量来看 3. 指针的核心用途 在被调函数中实现对主调函数中的数据的修改。要修改谁就传谁的地址在被调函数中必须要有对应的*p运算。 注意指针变量如果不初始化则是随机值而没有初始化的指针就叫做野指针。所以一般对于不初始化的指针都会用NULL来初始化。