1 定义
指针是用来存放地址的变量
不同类型的指针变量所占用的存储空间是相同的,sizeof(int)=sizeof(char)=sizeof(double)...
*是解引用操作符,&是取地址操作符,两者有着抵消作用
int a=20;int* p=&a;*p==*&a=20;
2,一级,二级指针
二级指针存储的是一级指针的地址
char**-->char*-->char;char a=1;char* p=&a;char** pa=&p;*pa=*(&p)**pa=a=1;
3,数组指针,指针数组
数组指针是指向整个数组地址的指针,指针数组是存放指针变量的数组
int arr[]={1,2,3,4}
//在一个函数内部(不是main函数)数组名代表首元素地址 : sizeof(arr)=4;
//二维数组的数组名是第一行的地址,&arr[0]=arr;
//arr是数组名,数组名是首元素的地址,*arr=1;&arr是整个数组的地址 &arr+1跳过16个字节 int (*p)[4]=&arr
int a[]={0};int b[]={0};int c[]={0};
int* parr[]={a,b,c};
4函数指针
类型 type(*)(type a ,type b);
定义时函数参数不能只写类型,调用时可以(type(*)(type ,type );)
int Add(int a,int b)
{return a+b;
}int main()
{int (*a)(int,int)=Add=&Add;a(x,y)~*a(x,y)~***..return 0;
}