C语言问题*p与(*p)的区别

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:54:56
double *p(int, int*)
double (*p)(int, int*)

这两个语句有什么区别呢?

double *p(int, int*) //这个是声明一个函数,此函数返回双精度浮点型指针,有两个参数,分别是整型和整型指针
double (*p)(int, int*) //这是声明一个指针,此指针是一个函数指针,指向一个函数,这个函数有两个参数:整型数和整型数指针;返回值是双精度浮点型数

第一个
一个函数p(int ,int*) 返回值为double*
第二个
一个指向返回值为double的函数的指针p

这是优先级有问题,前者因为()的优先级高于*,所以先与()接合,P表示为返回一个double指针的函数名
而后者加()后就会先与*接合,p为一个指向返回double的函数的指针

第一个返回了double类型的指针
第二个返回一个double类型的值

1.返回double指针地址
2.返回double指针地址所指的值