每一个变量都有一个内存地址,每一个内存位置都定义了可使用&运算符访问的地址
指针即内存地址,指针变量即用来存放内存地址的变量
使用一元运算符 * 来返回位于操作数所指定地址的变量的值
赋为NULL值的指针被称作空指针
地址为0x0
表明该指针不指向一个可访问的内存位置
可以对指针进行四种算术运算:`++, --, +, -
指针可以用关系运算符进行比较,如
==、< 和 >
。如果 p1 和 p2 指向两个相关的变量,比如同一个数组中的不同元素,则可对 p1 和 p2 进行大小比较。
若p1和p2指向同一个对象,则==
结果为true,否则为false
可以用指针的比较来确定数组元素的相对顺序
可以用一个指向字符的指针数组来存储一个字符串列表。 e.g.
const char *names[] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
// names[0]存储的是"Zara Ali"首字符的地址
// 编译器输出时会从首地址第一个元素开始直到遇见'\\\\0'结束地址偏移 参考[[7-c字符串]]
// names (指针的地址)
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。
int **var;
C 语言允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可