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)调用。

posted @ 2022-08-21 14:15  煮茶听风雨  阅读(54)  评论(0编辑  收藏  举报