首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个函数是什么意思,该如何处理

2012-02-10 
这个函数是什么意思BYTE*LoadBmpFromFile(LPCTSTRstrFileName,LONG&lWidth,LONG&lHeight)这个函数前面加了

这个函数是什么意思
BYTE*   LoadBmpFromFile(LPCTSTR   strFileName,   LONG&   lWidth,   LONG&   lHeight)

这个函数前面加了个*号是什么意思,能否详细解释下,另外可不可以把一个函数当做另一个函数的参数呢?

    解决马上结账,谢谢各位!

[解决办法]
1函数前面加*号什么意思?

函数前面BYTE* 说明返回值是一个BYTE类型的指针,BYTE= unsinged char,就是一段连续内存首地址了。

2另外可不可以把一个函数当做另一个函数的参数呢?

回答是肯定的。很多地方都会用到,你所说的就是函数指针了,比如在开启一个线程的时候,往往都要用到一个线程函数,这个函数就是通过函数指针来传递的。比如: typedef int (*pFun)(int, int);
[解决办法]
楼主去找 指针函数,函数指针相关的看看就明白了。:)
[解决办法]
看来你连基础都没有,快去补补吧
[解决办法]
BYTE* LoadBmpFromFile(LPCTSTR strFileName, LONG& lWidth, LONG& lHeight)
其中表“BYTE*”表示返回一个指向BYTE类型的指针。
[解决办法]
指针,只能这么跟你说了 --

还是看看书去吧
[解决办法]
这么跟你说吧,你想调用LoadBmpFromFile来把文件的内容读出来放到内存里,让你来设计LoadBmpFromFile这个函数的返回值和参数,你会怎么搞?
调用后总要得到一个存放从文件读取后的数据的首地址吧?返回BYTE*、char*都可以,参数用BYTE**、char**也没错,这取决于你怎么设计的。

再说函数指针的编译问题,所谓函数指针,那就是一个指针,存放的是函数入口地址,做参数只是把这个地址传进去,完全和编译问题无关。
比如:
typedef void (*FunC)();
void fun0() {};
void fun1() {};
void funt(FunC p) {p();}; //仅仅是调用p这个地址的函数
void main() {funt(fun0);funt(fun1);}; //只是将fun0和fun1的入口地址做参数传进去

这类问题,往往是死读书引起的,自己多做几个东西,说不定自己也会这样设计,那样就绝对不会有疑问了。


[解决办法]
函数指针作参数,传递的仅仅是地址,并不是真正调用,就像上面的那个例子,如果没有p(),那么根本就没有调用过传进来的参数所指定的函数。
至于为什么要用函数指针做参数,这个你以后自己设计大一点的结构,说不定自然而然地就会用到,现在去研究这个你想不到用途的用法根本就没有意义。
可以告诉你三个比较常用的函数指针作参数的例子:
CreateThread,创建线程,子线程会调用你指定的函数参数
SetTimer,第一个HWND为NULL时,必须使用最后一个回调函数,每次定时器溢出,就调用你指定的函数参数
EnumWindow,枚举窗口,对每个枚举到窗口,调用你指定的函数参数。
这几个函数的设计,是你没有办法用其他方法替代的。

热点排行