指针就是用来存放地址。&(取地址)表示取出这个变量的地址符号,*(解引用)指针说明符号,取地址里面的值。
指针理解:int A=12;int *p=&A;把12存在变量A空间的地址上。把A的空间里面地址存在p指针上。
指针格式:指针虽然指针存放地址,但是也有类型。 int a = 5; int * p = &a;

#include<stdio.h> #include<windows.h> int main() { int a = 5; int* p = &a; printf("这是指针的值:%d ",*p); printf("这是指针的地址:%p ", p); return 0; }
数组和指针的关系;一维数组的数组名就是一个指针。

#include<stdio.h> #include<windows.h> int main() { int array[5] = { 1,2,3,4,5 }; int* p = array; for (int i = 0; i < 5;i++) { printf("直接使用指针作为数组名:%d ",p[i]); } system("pause"); return 0; }
悬空指针:使用完之后(一般就是free释放空间之后)没有及时赋值为NULL的指针就是悬空指针。
野指针:未初始化的指针就是野指针。
指针可以进行运算:但只能进行+-运行运算,被运算的数必须是整数或者是指针。指针和整数运算得到的还是指针。指针-指针=两个地址之间能够存放多少个这样的数据类型。
个人分析:一般变量存的是地址,使用变量时,系统根据变量里面对应地址 去 常量区 查找地址上对应的值。
数组中括号a[0]和*类似解引用的作用。
指针数组:类型为指针的数组。
数组指针:..................懵B了。