**
指针,用来存储内存地址的变量,它指向单个对象的地址。
简单举个例子,int a 这里面的表示指针变量,a表示指针变量名,int表示这个指针是一个整型的指针。这如果还不明白的话,下面我用一串代码来更加具体的说一下。
**
#include<stdio.h>
void main(){
int a=3; //创建一个普通变量a 存3
int b=4; //创建一个普通变量b 存4
int* c; //创建一个指针变量c 指向b
c=&b; //将指针变量c指向普通变量b
int** d; //创建一个指向指针变量的指针变量
d=&c; //将指针变量d指向指针变量c
printf("a的值=%d\n",a);//打印a的值
printf("b的值=%d\n",b);//打印b的值
printf("a的地址=%d\n",&a);//打印a的地址
printf("b的地址=%d\n",&b);//打印b的地址
printf("c的地址=%d\n",&c);//打印c的地址
printf("d的地址=%d\n",&d);//打印d的地址
printf("c的值=%d\n",c); //打印的是c所指向的变量b的地址
printf("*c的结果=%d\n",*c);//打印取变量b的值
printf("d的值=%d\n",d);//打印的是d所指向指针变量c的地址
printf("*d的结果=%d\n",*d); // 打印指针变量c存的东西,c存的是b的地址
printf("**d的结果=%d\n",**d); // 打印b存的东西,b存的是4
// printf("%d\n",*a); warn
printf("%d\n",*&a);// 打印先取a的地址,再取a里面存的东西
printf("%d\n",&**d);// 打印d存的东西(c的地址)中的东西(b的地址)中的东西(4)的地址
printf("%d\n",*&**&d); // 打印d的地址中的东西(c的地址)中的东西(b的地址)的地址(c的地址)中的东西(b的地址)
}