社区
C++ 语言
帖子详情
void* fnptr; (void *)fnptr; void (*p) (int ,int)之前的区别
adventurous
2012-03-25 12:33:41
如题,我在一个结构体中看到了据说是函数指针的这样的声明,void* fnptr;,可以不要参数吗?
然后调用这个结构体的时候在函数指针的位置上写了(void *)fnptr;void加上括号了,这样声明和第一种有什么不同,但我在书上看到函数指针的声明是如下:void (*p) (int ,int),求解他们之间的区别。
...全文
283
5
打赏
收藏
void* fnptr; (void *)fnptr; void (*p) (int ,int)之前的区别
如题,我在一个结构体中看到了据说是函数指针的这样的声明,void* fnptr;,可以不要参数吗? 然后调用这个结构体的时候在函数指针的位置上写了(void *)fnptr;void加上括号了,这样声明和第一种有什么不同,但我在书上看到函数指针的声明是如下:void (*p) (int ,int),求解他们之间的区别。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
0黄瓜0
2012-03-25
打赏
举报
回复
void (*p) (int ,int)//函数指针。
pathuang68
2012-03-25
打赏
举报
回复
[Quote=引用 2 楼 adventurous 的回复:]
引用 1 楼 pengzhixi 的回复:
void* fnptr这个是void指针类型,它可以接受任何类型的指针。
(void *)fnptr是用来强fnptr这个指针类型强制转换为void*类型
意思是不是(void *)fnptr这个函数的返回类型强转为void*了?
[/Quote]
是的。
Cql_liliang
2012-03-25
打赏
举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
void* fnptr这个是void指针类型,它可以接受任何类型的指针。
(void *)fnptr是用来强fnptr这个指针类型强制转换为void*类型
[/Quote]
(void*)fnptr的意思是把fnptr指针强制转换成void* 型,这不能说明这个fnptr一定是函数指针,正如你所说的,void (*fn)(int , int),说明这个是指针函数,函数名为fn , 有两个int型参数 ,并且返回值为void
adventurous
2012-03-25
打赏
举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
void* fnptr这个是void指针类型,它可以接受任何类型的指针。
(void *)fnptr是用来强fnptr这个指针类型强制转换为void*类型
[/Quote]
意思是不是(void *)fnptr这个函数的返回类型强转为void*了?
pengzhixi
2012-03-25
打赏
举报
回复
1
void* fnptr这个是void指针类型,它可以接受任何类型的指针。
(void *)fnptr是用来强fnptr这个指针类型强制转换为void*类型
C语言笔记 -- typedef 与 函数指针
typedef可以用来定义函数类型,如下所示定义函数类型F: typedef
int
F(
void
); 这种类型的函数不带参数,返回值是
int
。 如下声明定义了一个函数指针:
int
(*fp)(
void
); 该指针指向的函数不带参数,返回值为
int
。 所以 该声明等同于 F *fp; ...
int
* (*ptr)()怎么理解(指向函数的指针)
先来分析一下
int
* (*ptr)() 1.由于小括号的运算级比较高,结合方法又是自左向右,所以先运算(*ptr),表明定义了一个指针ptr 2.接下来再运算最右边的小括号(),表明是一个函数 3.接下平再运算* (*ptr)(),表明函数的返回值是一个指针 4.那么
int
* (*ptr)()表明定义了一个指针变量ptr,它指向一个没有参数,并且返回值是一个整型指针的函数。这就叫做指向函数的
Android JNI 学习笔记
JNI 是 Java Native
Int
erface(Java 本地接口)。JNI不是Android 转悠的东西,他是从Java继承来的。但是 对于Android来说JNI至关重要,Android 作为一种嵌入式操作系统,有大量和驱动、硬件相关的功能都是用C/C++来实现的。可以说在Android中不管应用级还是系统级的开发都离不开JNI。 Java语言的执行,离不开JVM
jni
(1).andorid CPP调用java函数和访问其成员: 原理 => CPP代码找到java的那个class里面的函数的入口地址,然后在CPP代码中调用java代码 步骤1) 用FindClass()函数找到该java类(如android.os.Binder)的实例对象的引用: jclass clazz = env->FindClass(kBinderPathName)
Android JNINativeMethod详解
Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的
区别
是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。这个数组的类型是JNINativeMethod,定义如下:
typedef struct { const char* name; const char* signature;
void
*
fnPtr
; } JNINativeMethod;
第一个变量name是Java中函
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章