int* p; 指向整形的指针变量p p是指针变量,int*是指针类型
char* str;指向字符的指针变量,也是字符串的表达形式
float* p和double* p 这些都是比较简单的指针
指针数组和数组指针:
指针数组: 是一个数组->存放指针的数组
int a = 1;
int b = 2;
int c = 3;
int* arr[3] = {&a,&b,&c};
数组指针:是一个指针,指针指向一个数组的地址
int arr[3] = {1,2,3};
int (*parr)[3] = &arr; *parr 必须用括号括起来,保证parr先是指针,不然就是数组了.这个表达式表 示parr指针,指向一个元素个数为3的整形数组
函数指针:是一个指针,指针指向一个函数
int add(int x, int y)
{ return x + y;
}
int (*p)(int, int) = &add; 这里p = add
函数指针数组:
int add(int x, int y)
{ return x + y;
}
int sub(int x, int y)
{ return x - y;
}
int mul(int x, int y)
{ return x * y;
}
int div(int x, int y)
{ return x / y;
}
int (*p[4])(int, int) = {&add,&sub,&mul,&div}
指向函数指针数组的指针:
接着上面的代码:
int (*p[4])(int, int) = {&add,&sub,&mul,&div} p是函数指针数组
int (*(*p2)[4])(int, int) = &p; 这里p2就是指向函数指针数组的指针了