| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 353 人关注过本帖
标题:对函数和指针都不熟悉,哪位给改动改动
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:20 回复次数:4 
对函数和指针都不熟悉,哪位给改动改动
程序代码:
#include <stdio.h>
#include <windows.h>
//要求1、请不要改动我的主体思路
//要求2、把第三个参数变成普通变量或者指针变量
//目的:测试形参向主程序递交返回值
DWORD _mul(DWORD a,DWORD b,DWORD c[])   //这里用数组向主程序传值
{
    DWORD rets=0;
    DWORD tmp=0;
    _asm
    {
        xor edx,edx;
        mov eax,a;
        mov ebx,b;
        cdq;
        imul ebx;
        mov rets,eax;
        mov tmp,edx;
    }
    c[0]=tmp;     //这里向主程序返回乘积的高32位
    return rets;  //这里向主程序返回乘积的低32位
}
int main()
{
    DWORD l32=0;
    DWORD h32[1]={0};
    l32=_mul(10000000,10000000,h32);
    printf("%X%X\n",h32[0],l32);   //这里输出1000万的平方的结果5AF3107A4000
    return 0;
}
2012-12-08 09:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
还是需要那个临时变量  这种方法我都用过  只是子函数中没有用那个临时变量
晕,主程序传的是变量h32的地址(这样就避免了变量生存期的问题)而子函数就是向那个地址写数据

DO IT YOURSELF !
2012-12-08 09:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用Alar30在2012-12-8 10:04:00的发言:

来膜拜一下哈。。。
不会吧  这也膜拜

DO IT YOURSELF !
2012-12-08 10:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用yuccn在2012-12-8 10:26:32的发言:

DWORD _mul(DWORD a,DWORD b,DWORD *pdwHight/*c[]*/)   //这里用数组向主程序传值
{     
    _asm
      {
          xor edx,edx;
          mov eax,a;
          mov ebx,b;
          cdq;
          imul ebx;
          push eax;
          mov eax, pdwHight;
          mov [eax], edx;
          pop eax;
      }
}

一个临时变量都不要
恩 这个比较好,不过会有一个函数无返回值的警告,虽然我们知道eax已经返回了,但是编译器不知道

DO IT YOURSELF !
2012-12-08 10:30
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用yuccn在2012-12-8 10:29:20的发言:

上面代码用release版本测试好点,debug版本可能被编译器嵌入大量汇编代码不知道有没有干扰
反正我测试没问题

DO IT YOURSELF !
2012-12-08 10:31
快速回复:对函数和指针都不熟悉,哪位给改动改动
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021726 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved