鱼C论坛

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

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

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

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

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

  8. /*
  9. 假设系统传递参数:

  10. *argv[] = {
  11.         "C:",
  12.         "\xxxx",
  13.         "\xxxx",
  14.         "\Documents",
  15.         "\C语言",
  16.         "\课后作业_001.exe",
  17.         NULL
  18. }

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

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

  21. --------------------------------------------------------

  22. 假设系统传递参数:

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

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

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

  29. */
复制代码

最佳答案

查看完整内容

我的理解是:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  8. /*
  9. 假设系统传递参数:

  10. *argv[] = {
  11.         "C:",
  12.         "\xxxx",
  13.         "\xxxx",
  14.         "\Documents",
  15.         "\C语言",
  16.         "\课后作业_001.exe",
  17.         NULL
  18. }

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

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

  21. --------------------------------------------------------

  22. 假设系统传递参数:

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

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

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

  29. */
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-6 20:17:45 | 显示全部楼层
搞得乱糟糟的。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 20:43:44 | 显示全部楼层
我的理解是
字符指针数组,那就是数组了,你的意思应该是 字符指针的指针
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

那岂不是就是指针数组??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

是呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 20:59:30 | 显示全部楼层
数组的大小在于它声明的类型
而指针在32位的系统下面是4Byte,而在64位系统下面是8Byte
小甲鱼最新课程 -> https://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命令行后面跟的一些参数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  5. print("sum=",sum)   

  6. '''
  7. PS C:\Users\Administrator> & C:/Programs/Python/python.exe d:/wp/test7.py   12  23  45
  8. sum= 80
  9. PS C:\Users\Administrator> & C:/Programs/Python/python.exe d:/wp/test7.py   12  23  45 56 89
  10. sum= 225
  11. '''
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 03:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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