这个函数是什么意思
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,枚举窗口,对每个枚举到窗口,调用你指定的函数参数。
这几个函数的设计,是你没有办法用其他方法替代的。