指针初识 一. 一级指针 什么是指针呢?其实指针就是一个存放内存地址的变量,通常理解为“指向某个空间”,而一级指针,顾名思义是存放一个已知空间(已知量)的地址的变量 例如: int a = 10; int* p = &a; printf("%d", *p); 这里,p是一个一级指针,其中存放的就是已知变量a的地址,当我们用“*”号去解引用它时,编译器则会在p的地址中解引用当前地址存放的值。相当于一个一维数组。但本质不是一维数组 二. 二级指针 一个存放指针的一级指针,即在一级指针的地址中存放的是另一个值的地址,我们就叫它二级指针 例如: int a = 10; int *p1 = &a; int **p2 = &p1; 三. 指针和数组 指针和数组的用法基本相同,但本质不同: 1. 存储方式不同,数组是按顺序存储,并且内存的大小由定义的变量类型决定,而指针的存储不一定连续且都是4字节的空间存储. 2. 赋值方式不同,数组可以给定空间大小后不进行初始化,但是指针必须初始化或使用动态开辟内存 3. 数组是数组,指针式指针,各有优缺点,但本质不相同 四. 指针数组 顾名思义,一个存放指针类型变量的数组 例如: int* arr1[10]; //整形指针的数组 char *arr2[4]; //一级字符指针的数组 char **arr3[5];//二级字符指针的数组