每一个变量都有一个内存地址,每一个内存位置都定义了可使用&运算符访问的地址

Untitled

指针即内存地址,指针变量即用来存放内存地址的变量

使用一元运算符 * 来返回位于操作数所指定地址的变量的值

NULL指针

赋为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;

Untitled

C 语言允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可