鱼C论坛

 找回密码
 立即注册
查看: 1158|回复: 8

[已解决]main函数的argv形式参数,我不是很理解小甲鱼的意思

[复制链接]
发表于 2022-1-6 20:17:12 | 显示全部楼层 |阅读模式
5鱼币
C 语言还规定C语言还规定了argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符指针的指针(注意:它不是指针数组,但你可以理解为指向一个字符指针数组名或字符串数组,在函数章节我们将详细讲解,这里只要求你能够根据案例模仿实现即可)

这里指向字符指针数组 不就是指向数组指针的指针吗?
最佳答案
2022-1-6 20:17:13
我的理解是:
#include <stdio.h>

int main(int argc, char *argv[])
{
        printf("argc: %d\n", argc);  // argument count  参数数量
        printf("argv: %s\n", *argv); // argument vector 文件路径,比如:C:\xxxx\xxxx\Documents\C语言\课后作业_001.exe
        return 0;
}

/*
假设系统传递参数:

*argv[] = {
        "C:",
        "\xxxx",
        "\xxxx",
        "\Documents",
        "\C语言",
        "\课后作业_001.exe",
        NULL
}

那么这里的 argv 数组里就有 6 个元素,argc = 6

int main(6, argv) 这只是范例

--------------------------------------------------------

假设系统传递参数:

*argv[] = {
        "C:\xxxx\xxxx\Documents\C语言\课后作业_001.exe",
        NULL
}

那么这里的 argv 数组里就有 1 个元素,argc = 1

int main(1, argv) 这只是范例

*/

最佳答案

查看完整内容

我的理解是:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 20:17:13 | 显示全部楼层    本楼为最佳答案   
我的理解是:
#include <stdio.h>

int main(int argc, char *argv[])
{
        printf("argc: %d\n", argc);  // argument count  参数数量
        printf("argv: %s\n", *argv); // argument vector 文件路径,比如:C:\xxxx\xxxx\Documents\C语言\课后作业_001.exe
        return 0;
}

/*
假设系统传递参数:

*argv[] = {
        "C:",
        "\xxxx",
        "\xxxx",
        "\Documents",
        "\C语言",
        "\课后作业_001.exe",
        NULL
}

那么这里的 argv 数组里就有 6 个元素,argc = 6

int main(6, argv) 这只是范例

--------------------------------------------------------

假设系统传递参数:

*argv[] = {
        "C:\xxxx\xxxx\Documents\C语言\课后作业_001.exe",
        NULL
}

那么这里的 argv 数组里就有 1 个元素,argc = 1

int main(1, argv) 这只是范例

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

使用道具 举报

 楼主| 发表于 2022-1-6 20:17:45 | 显示全部楼层
搞得乱糟糟的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 20:43:44 | 显示全部楼层
我的理解是
字符指针数组,那就是数组了,你的意思应该是 字符指针的指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-6 20:54:39 From FishC Mobile | 显示全部楼层
大马强 发表于 2022-1-6 20:43
我的理解是
字符指针数组,那就是数组了,你的意思应该是 字符指针的指针

那岂不是就是指针数组??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 20:55:20 | 显示全部楼层
BlackWhite_idea 发表于 2022-1-6 20:54
那岂不是就是指针数组??

是呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 20:59:30 | 显示全部楼层
数组的大小在于它声明的类型
而指针在32位的系统下面是4Byte,而在64位系统下面是8Byte
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-7 07:24:35 From FishC Mobile | 显示全部楼层
本帖最后由 wp231957 于 2022-1-7 07:25 编辑
BlackWhite_idea 发表于 2022-1-6 20:54
那岂不是就是指针数组??


第二个参数是一个字符串数组
就是cmd命令行后面跟的一些参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-7 09:14:13 | 显示全部楼层
用python给你解析一下:(原理是一样的)
import sys

sum=0
for x in sys.argv[1:]:
    sum+=int(x)

print("sum=",sum)    

'''
PS C:\Users\Administrator> & C:/Programs/Python/python.exe d:/wp/test7.py   12  23  45
sum= 80
PS C:\Users\Administrator> & C:/Programs/Python/python.exe d:/wp/test7.py   12  23  45 56 89
sum= 225
'''

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
傻眼貓咪 + 5 + 5 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-1 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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