一、指针声明
1.1、“ * ” 符号表示指针
int* point;
1.2、指针指向另一个指针
两个星号**表示
int** point;
二、* 运算符
2.1、运算前必须初始化
//声明指针变量之后,编译器会为指针变量本身分配一个内存空间
//但是这个内存空间里面的值是随机的
int* p;
*p = 1; // 错误
//NULL在 C 语言中是一个常量,表示地址为0的内存空间
//这个地址是无法使用的,读写该地址会报错。
int *d = NULL; //初始化值为NULL,分配空间
int a;
int *a1;
//初始化指针 a1 指向 变量a
a1 = a;
//在执行运算,实际是操作变量 a
*a1 = 1+2;
printf("%d\n",*a1);
三、& 运算符
3.1、& 取出内存地址
#include <stdio.h>
/**
* @brief
* 指针学习
*
*/
void increment(int *p)
{
//修改 指针 *p 指向的值 x
*p = *p + 1;
};
int main(int argc, char const *argv[])
{
int x = 1;
increment(&x);
printf("%d\n", x); // 2
return 0;
}
3.2、&运算符 与 *运算符 互为逆运算
int i = 5;
//&i 取出 变量i 的内存地址
// *(&i) 取出 变量 i 内存地址指向的值
if (i == *(&i)) // 正确