指针可以带参数吗?这3种指针有啥区别
Posted
技术标签:
【中文标题】指针可以带参数吗?这3种指针有啥区别【英文标题】: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;
谢谢
【问题讨论】:
用什么编程语言? @JJJ C 或 C++ 将被应用。 正确标记问题将不胜感激 ***.com/questions/840501/… 我会确保从下一次开始这样做。谢谢JJJ.. 【参考方案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);
只是一个指针变量,不是任何类型的“原型”。以上是关于指针可以带参数吗?这3种指针有啥区别的主要内容,如果未能解决你的问题,请参考以下文章