鱼C论坛

 找回密码
 立即注册
查看: 1317|回复: 12

[已解决]请问主函数传参给子子函数问题怎么高效?

[复制链接]
发表于 2021-4-14 10:28:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我叫学得会 于 2021-4-14 11:56 编辑

师傅们,请问主函数传参数给子子函数,什么方法比较高效不占内存?还请师傅们示例,谢谢师傅们!

#include <iostream>
#include <windows.h>
#include <string>
//#include "b64/base64.h"

//传进参数:geturl: http://www.baidu.com/

using namespace std;

int main(int argc, char** argv[])
{
        if (argc != 2)
        {
                return -1;
        }
        else if(argv[1] == 1)
        {
                test1();
                test3();
                return 0;
        }
        else
        {
                return -1;
        }
}


void test1()
{
        
        while (true) {
                try {

                        test2();
                        
                }
                catch (const std::exception& e)
                {

                }

        }
        return;
}

void test2()
{
        MessageBox(NULL, TEXT(geturl), TEXT("帮助"), MB_OK);
        return;
}
最佳答案
2021-4-15 07:04:17
我叫学得会 发表于 2021-4-14 20:11
就是把主函数 输入的值(一串网址)传递给子函数里的子函数调用,我自己写的感觉不正规,想求个行家版本 ...
#include <stdio.h>

void test4(char *s)
{
    printf("瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:\n %s\n",s);
}

void test3(char *s)
{
    test4(s);
}

void test2(char *s)
{
    test3(s);
}

void test1(char *s)
{
    test2(s);
}

int main(int argc, char* argv[])
{
    if (argc<2)
    {
        printf("需要参数\n");
        return 0;
    }
    test1(argv[1]);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-14 12:41:42 | 显示全部楼层
教教孩子吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 18:26:37 From FishC Mobile | 显示全部楼层
我叫学得会 发表于 2021-4-14 12:41
教教孩子吧~

通过命令行传??对于子函数肯定是通过栈传参啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-14 19:06:37 | 显示全部楼层
wp231957 发表于 2021-4-14 18:26
通过命令行传??对于子函数肯定是通过栈传参啊


师傅可以代码示范一下吗?,这种资料太少找不到示例,寻找高效的方法,不占太多内存的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 19:22:16 From FishC Mobile | 显示全部楼层
我叫学得会 发表于 2021-4-14 19:06
师傅可以代码示范一下吗?,这种资料太少找不到示例,寻找高效的方法,不占太多内存的

不知道你想干嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-14 20:11:50 | 显示全部楼层

就是把主函数 输入的值(一串网址)传递给子函数里的子函数调用,我自己写的感觉不正规,想求个行家版本、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 20:13:17 From FishC Mobile | 显示全部楼层
我叫学得会 发表于 2021-4-14 20:11
就是把主函数 输入的值(一串网址)传递给子函数里的子函数调用,我自己写的感觉不正规,想求个行家版本 ...

我也③楼都问过了,你这个网址是通过命令行方式传进去吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 20:41:33 | 显示全部楼层
我叫学得会 发表于 2021-4-14 20:11
就是把主函数 输入的值(一串网址)传递给子函数里的子函数调用,我自己写的感觉不正规,想求个行家版本 ...

说半天 也没说明白你想干嘛,瞎写了一个   看看是不是你想要的
#include <stdio.h>

void test(char *s)
{
    printf("瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:\n %s\n",s);
}

int main(int argc, char* argv[])
{
    if (argc<2)
    {
        printf("需要参数\n");
        return 0;
    }
    test(argv[1]);
    return 0;
}
/*
PS E:\wp> ./test2 http://www.baidu.com
瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:
 http://www.baidu.com
PS E:\wp> ./test2
需要参数
PS E:\wp> 
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-14 21:29:17 | 显示全部楼层
本帖最后由 我叫学得会 于 2021-4-14 22:21 编辑
wp231957 发表于 2021-4-14 20:41
说半天 也没说明白你想干嘛,瞎写了一个   看看是不是你想要的


是这样的,网址是 命令行传参主函数,然后这个test(argv[1]);test()里面还包涵着其他子函数,参数还要传进这个test2() test3()等其他都会调用这个值,求高效传递方法

#include <stdio.h>

void test(char *s)                                       //这里还包括2个子函数需要调用 main函数的参数
{
    printf("瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:\n %s\n",s);

    test2(需要主函数的参数值);
    test3(需要主函数的参数值);
}

int main(int argc, char* argv[])
{
    if (argc<2)
    {
        printf("需要参数\n");
        return 0;
    }
    test(argv[1]);
    return 0;
}
/*
PS E:\wp> ./test2 http://www.baidu.com
瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:
http://www.baidu.com
PS E:\wp> ./test2
需要参数
PS E:\wp>
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 22:22:39 | 显示全部楼层
8楼的代码不够高效吗?你所说的高效指的是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-14 22:46:19 | 显示全部楼层
人造人 发表于 2021-4-14 22:22
8楼的代码不够高效吗?你所说的高效指的是?



就是 test(argv[1])函数下还包括其他子函数需要调用main函数的值,所以有点乱。。。



#include <stdio.h>

void test(char *s)
{
    printf("瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:\n %s\n",s);

    test3(需要调用main函数参数);                          //是这里的众多函数都需要调用main函数的 参数
    test4(需要调用main函数参数);                        //这里也需要调用main函数的 参数

}

int main(int argc, char* argv[])
{
    if (argc<2)
    {
        printf("需要参数\n");
        return 0;
    }
    test(argv[1]);
    return 0;
}
/*
PS E:\wp> ./test2 http://www.baidu.com
瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:
http://www.baidu.com
PS E:\wp> ./test2
需要参数
PS E:\wp>
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-15 07:04:17 | 显示全部楼层    本楼为最佳答案   
我叫学得会 发表于 2021-4-14 20:11
就是把主函数 输入的值(一串网址)传递给子函数里的子函数调用,我自己写的感觉不正规,想求个行家版本 ...
#include <stdio.h>

void test4(char *s)
{
    printf("瞧,主函数从命令行传进来的参数  跑到我这里了,它就是:\n %s\n",s);
}

void test3(char *s)
{
    test4(s);
}

void test2(char *s)
{
    test3(s);
}

void test1(char *s)
{
    test2(s);
}

int main(int argc, char* argv[])
{
    if (argc<2)
    {
        printf("需要参数\n");
        return 0;
    }
    test1(argv[1]);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-15 11:32:09 | 显示全部楼层
我叫学得会 发表于 2021-4-14 22:46
就是 test(argv[1])函数下还包括其他子函数需要调用main函数的值,所以有点乱。。。
#include<stdio.h>
#include<math.h>
//typedef enum {true=1,false=0}bool;

void test4(char *s)
{
    printf("我是主函数传参第三个参数:\n %s\n",s);
}

void test3(char *s)
{
    printf("我是主函数传参第二个参数:\n %s\n",s);
}

void test2(char *s)
{
    printf("我是主函数传参第一个参数:\n %s\n",s);
}

void test1(char *s1,char *s2,char *s3)
{
    test2(s1);
    test3(s2);
    test4(s3);
}

int main(int argc, char* argv[])
{
    if (argc<4)
    {
        printf("本程序至少需要三个参数\n");
        return 0;
    }
    test1(argv[1],argv[2],argv[3]);
    return 0;
}

/*
    PS D:\我> ./wp1
    本程序至少需要三个参数
    PS D:\我> ./wp1 1
    本程序至少需要三个参数
    PS D:\我> ./wp1 1 2
    本程序至少需要三个参数
    PS D:\我> ./wp1 1 2 3
    我是主函数传参第一个参数:
    1
    我是主函数传参第二个参数:
    2
    我是主函数传参第三个参数:
    3
    PS D:\我>


*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-13 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表