【问题标题】:Can a pointer take arguments? What is the difference between these 3 kind of pointers指针可以带参数吗?这3种指针有什么区别
【发布时间】:2018-05-12 09:05:41
【问题描述】:

我想知道以下语句的含义。

int *abc(int,int);
int (*abc)(int,int);

以及这些指针与普通指针有何不同。例如:

int *ptr;

谢谢

【问题讨论】:

标签: c++ c pointers


【解决方案1】:

指针可以带参数吗?

不,指针只是一个存储内存位置地址的变量。

int *abc(int,int);

这是函数 abc 的声明,它接受两个参数,都是 int 类型,并返回一个指向 int 类型的指针。

int (*abc)(int,int);

这里,abc 是一个指针,它可以指向一个函数,该函数接受两个 int 类型参数并返回一个 int
说,如果你有一个函数fun

int fun(int a, int b) {
    return a + b;
}

abc 可以指向fun(),像这样:

abc = fun;

然后你可以使用abc指针调用函数fun,像这样:

abc(4, 5);

这些指针与普通指针有何不同。例如:
int *ptr;

这里,ptr 是一个指针,可以存储int 类型的地址。

因此,所有的指针都存储一些内存位置,区别在于它们指向的类型的地址。

【讨论】:

    【解决方案2】:

    假设 C/C++
    this: int *abc(int,int); 是一个函数原型,它返回一个指向 int 的指针并接受两个 int 类型的参数

    this: int (*abc)(int,int); 是一个指向函数的指针的声明,该函数返回 int 并接受两个 int 类型的参数

    【讨论】:

    • int (*abc)(int,int); 只是一个指针变量,不是任何类型的“原型”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2010-12-17
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多