一、指针声明
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 指向 变量aa1 = 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); // 2return 0;}
3.2、&运算符 与 *运算符 互为逆运算
int i = 5;//&i 取出 变量i 的内存地址// *(&i) 取出 变量 i 内存地址指向的值if (i == *(&i)) // 正确
