1 在函数参数中传递指针
void fun(int *p){
*p = 3;
int a = 3;
fun(&a);
int *p = &a;
fun(p); //两种方式 一种是传递指针,一种是传递地址 都可以
cout << a << endl;
2 指针指向数值型 int float double..
type *p = &变量名
3 指针指向char类型 可以使用字面量来初始化 char *p = "I love China"
4 指针指向函数
声明函数指针 int (*p)(duble, int) = fun 返回类型(*指针名)(参数类型列表) 声明可以不加形参函数声明也是 调用fun()和p()就是一样了
接收传送函数指针 fun(int (*p)(int); 调用直接传函数名字 fun(func1)
函数指针的数组
double sum( double, double);
double product( double ,double);
double (*p[3])(double, double) = { sum, product}
调用 pfun[1]( 2.5, 3.5 ) 等价于 product( 2.5, 3.5);
5 返回指针 注意不要从函数中返回局部变量的地址
6 数组指针,指针数组
指针数组:是存放指针的数组 int a[3][4]; int (*p)[4] 指向4个元素的一维数组;p+1会越过4个元素
数组指针:是指向数组的指针 int *p[4], 数组中存放4个元素,每个元素都是一个指针变量
7 常量指针和指向常量的指针
常量指针:不能再指向别的值(地址不能改变) 只能指向初始化时的地址
int a = 3; int b = 4;
int *const p = &a;
p = &b; // 错误 p不能再更改;
指向常量的指针:指针指向的内容不能通过*也就是指针进行修改,可以直接改变量值
int a = 3;
const int *p = &a;
*p = 40 // 出错 不能编译
a = 40; //这样可以