int *p(int int)与int (*p)(int int)区别?

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:13:36
第二种
(*p)在int ()中间,表示(*p)是函数,这个函数未定参数表,返回值是int型的;
再看(*p),p前有*,表示p为指针,这个指针指向的对象是前面那个函数。
p的使用举例:
int f()
{
...
}

int main()
{
int (*p)(); // 声明p变量
...
p = f; // p指向f函数
(*p)(); // 调用f函数
p(); // 简写形式,和上面的等价
...
}
那第一种呢?区别又是什么?

第一个
单步运算是右结合p先与()结合 说明p是一个函数 这个函数返回一个指针 这个指针指向了一个int型数据

第二个
因为有*p带有一个括号,所以*与p先集合 说明p是一个指针 然后和()结合 说明这个指针指向了一个函数 这个函数的返回值是int型

不明白的可以写再补充里

第一个,声明了一个名为p的函数。

举个例子:

#include <iostream>
using namespace std;

void foo(int)
{
cout << "foo\n";
}

int main()
{
// p是函数指针
void (*p)(int) = foo;
p(1);
(*p)(1);

// 这个是函数声明
int* bar(int);
bar(1);
}

int* bar(int)
{
cout << "bar\n";
return 0;
}

我觉得把&或*号写地靠近类型比较好,C++就强调类型:

int* p();
这样一眼就能看出,p是个函数。