C++指针
两种声明方式
int* p = new int;
*p = 1000;
int a = 1000;
int* p = &a;
数组名和指针的区别
-
指针的值可以修改,数组名是常量。
pointerName = pointerName + 1; //valid arrayName = arrayName + 1; //not allowed
-
sizeof(arrayName)为数组的长度,sizeof(pointerName)为指针的长度。均以字节为单位。
-
arrayName为指向数组第一个元素的指针,&arrayName为指向数组的指针。两个指针指向的内存是一样的,但指向的内存块大小不同。
在函数参数中,int a[] 和 int* a 是完全相同的,都表示指针。因此,为了将数组类型和元素数量都告诉数组处理函数,通常在函数参数中传入数组的长度。
函数指针
函数的地址
函数名,不带参数。
声明
声明指向函数的指针时,必须指定指针指向的函数类型。这意味着声明应指定函数的返回类型以及函数的参数。
double func(int); //函数
double (*pFunc)(int); //指向函数的指针
double *pFunc(int); //返回值为double* 的函数
调用
可以通过pFunc或(*pFunc)调用。