main函数的行参(argc、argv)实例解释

目录

前言

一、问题描述

二、行参含义

三、题目应用

1、代码(重点在中文批注处)

2、执行测试


前言

    在做CS50 Week3的problem set--plurality时,遇到main函数里带了两个行参(int argc, string argv[]),导致代码一下子没看懂。后来了解了它们的含义后才完成了这份作业。这篇文章通过CS50的plurality实例,解释了argc argv的作用。

一、问题描述

    作业内容就是简单得找出获得投票数最高的人。

    所有候选名单存放在一个数组里,但这些人的名字需要通过argc和argv输入。

二、行参含义

  • arg:argument,参数。
  • argc:argument count,参数数目。
  • argv:argument vector,参数数组。

        argv[0] 指向程序运行时的全路径名;

        argv[1] 指向程序在DOS命令中执行程序名后的第一个字符串;

        argv[2] 指向执行程序名后的第二个字符串;

        ……

        argv[argc] 为NULL。

三、题目应用

1、代码(重点在中文批注处)

#include <cs50.h>
#include <stdio.h>
#include <string.h>// Max number of candidates
#define MAX 9// Candidates have name and vote count
typedef struct
{string name;int votes;
}
candidate;// Array of candidates
candidate candidates[MAX];// Number of candidates
int candidate_count;// Function prototypes
bool vote(string name);
void print_winner(void);int main(int argc, string argv[])
{// Check for invalid usageif (argc < 2){printf("Usage: plurality [candidate ...]\n");return 1;}// Populate array of candidatescandidate_count = argc - 1;if (candidate_count > MAX){printf("Maximum number of candidates is %i\n", MAX);return 2;}for (int i = 0; i < candidate_count; i++)  //初始化candidates数组。{candidates[i].name = argv[i + 1];    //候选人名单要从argv[1]开始,因为argv[0]是可执行文件名,而从argv[1]开始的是通过命令行输入的第一个可变参数。candidates[i].votes = 0;}int voter_count = get_int("Number of voters: ");// Loop over all votersfor (int i = 0; i < voter_count; i++){string name = get_string("Vote: ");// Check for invalid voteif (!vote(name)){printf("Invalid vote.\n");}}// Display winner of electionprint_winner();
}// Update vote totals given a new vote
bool vote(string name)
{for (int i = 0; i < candidate_count; i++){if (strcmp(name, candidates[i].name) == 0){candidates[i].votes++;return true;}}return false;
}// Print the winner (or winners) of the election
void print_winner(void)
{int max = 0;for (int i = 0; i < candidate_count; i++){if (max < candidates[i].votes){max = candidates[i].votes;}}for (int i = 0; i < candidate_count; i++){if (max == candidates[i].votes){printf("%s\n", candidates[i].name);}}return;
}

2、执行测试

     命令行中的“plurality”对应argv[0],“Zhang”对应argv[1],“Li”对应argv[2],“Sun”对应argv[3]。实际实现了通过命令行输入实参传递给main函数的方法,使所需要的候选人名单灵活性增加。

参考文章:

https://blog.csdn.net/Eastmount/article/details/20413773?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168492962916800211560794%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168492962916800211560794&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-20413773-null-null.142^v87^control,239^v2^insert_chatgpt&utm_term=main的argc&spm=1018.2226.3001.4187icon-default.png?t=N4N7https://blog.csdn.net/Eastmount/article/details/20413773?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168492962916800211560794%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168492962916800211560794&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-20413773-null-null.142^v87^control,239^v2^insert_chatgpt&utm_term=main的argc&spm=1018.2226.3001.4187https://blog.csdn.net/qq_35635374/article/details/124483841?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168492962916800211560794%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168492962916800211560794&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-124483841-null-null.142^v87^control,239^v2^insert_chatgpt&utm_term=main的argc&spm=1018.2226.3001.4187系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、main函数中的argc和argv两个形参的含义二、main函数中的argc和argv两个形参的调用原理1、以ROS一个简单功能包的main函数举例说明argc参数2、以ROS一个简单功能包的main函数举例说明argv参数总结前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对进程中main函数中的argc和argv两个形参的含义及调https://blog.csdn.net/qq_35635374/article/details/124483841?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168492962916800211560794%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168492962916800211560794&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-124483841-null-null.142^v87^control,239^v2^insert_chatgpt&utm_term=main的argc&spm=1018.2226.3001.4187

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23372.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM探索:GPT类模型的几个常用参数 Top-k, Top-p, Temperature

Top-k抽样模型从最可能的"k"个选项中随机选择一个如果k10&#xff0c;模型将从最可能的10个单词中选择一个Top-p抽样模型从累计概率大于或等于“p”的最小集合中随机选择一个如果p0.9&#xff0c;选择的单词集将是概率累计到0.9的那部分Temperature控制生成文本随机性…

GPT-4震撼发布:如何加入候补名单

ChatGPT 点燃了科技行业的明灯&#xff0c;GPT-4 能燎原吗&#xff1f; 谁能革得了 ChatGPT 的命&#xff1f;现在看来还是 OpenAI 自己。 在 ChatGPT 引爆科技领域之后&#xff0c;人们一直在讨论 AI「下一步」的发展会是什么&#xff0c;很多学者都提到了多模态&#xff0c;我…

chatgpt赋能python:如何用Python打造一个简单的抽奖程序

如何用Python打造一个简单的抽奖程序 随着互联网的不断发展&#xff0c;抽奖活动已经成为了各种营销活动的必备环节&#xff0c;因此如何快速便捷地实现一个抽奖程序也变得尤为重要。本文将介绍如何使用Python打造一个简单的抽奖程序。 一、抽奖程序的工作原理 抽奖程序的核…

一文读懂 ChatGPT 插件功能:语言模型获取新信息的“眼睛和耳朵”

来源&#xff1a;OpenAI 编译&#xff1a;巴比特 图片来源&#xff1a;由无界 AI工具生成 OpenAI&#xff1a;我们已经在 ChatGPT 中实现了对插件的初步支持。插件是专门为语言模型设计的工具&#xff0c;以安全为核心原则&#xff0c;并帮助 ChatGPT 访问最新的信息&#xff0…

OpenAI 再丢“王炸”:ChatGPT “封印”解除,能联网、搜索了!

整理 | 屠敏 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 「乱花渐欲迷人眼」&#xff0c;新的一天里&#xff0c;OpenAI 再次丢出“王炸”&#xff1a;ChatGPT 推出插件功能&#xff0c;既能联网&#xff0c;也能开启搜索&#xff0c;还能执行代码和运…

三菱加工中心CNC编程G代码讲解

注意&#xff1a;在G之后没有接续数值指令中&#xff0c;在运转时将变成G00的动作。&#xff08;注1&#xff09;印有“*”记号表示初期状态应选择的指令码或被选择的指令码。印有“※”记号表示初期状态依参数所选定指令码或被选择的指令码。&#xff08;注2&#xff09;同一单…

如何用ChatGPT做咨询师,附Prompt

对基本问题研究得不深不透、得不到可靠的分析框架支持的情况下&#xff0c;仓促采取就事论事的应对措施 &#xff0c;由于未能触及事情的根本&#xff0c;往往非但不能获得预期的效果&#xff0c;相反可能引发新的矛盾。 ——吴敬琏&#xff08;著名经济学家&#xff0c;国务院…

chatGPT:5分钟制作PPT

近日&#xff0c;公司推广办公自动化&#xff0c;让我当回培训师&#xff0c;培训后勤部门员工如何使用RPA。做个培训PPT的重任自然得交给chatGPT了&#xff0c;以下是制作步骤&#xff1a; 步骤一&#xff1a;拟写提示词交chatGPT “你现在是一位编写PPT的高手。我会提出PPT的…

ChatGPT技巧大揭秘之PPT制作

接下来&#xff0c;我们将进入全新的ChatGPT篇章&#xff0c;这个篇章的主要目的是教大家如何正确地使用ChatGPT。很多人接触过ChatGPT&#xff0c;但是最终的结果都是不太满意&#xff0c;认为ChatGPT并没有传说中那么神奇。确实&#xff0c;要想让ChatGPT达到电影中那样神奇的…

安全的可靠的数据防泄密系统

大数据时代的来临&#xff0c;给人们的生活带来了很多便利&#xff0c;给企业提供了更多的商业机遇&#xff0c;而另一方面&#xff0c;大数据又增加了重要信息泄漏的风险&#xff0c;普通的信息安全防护手段在现阶段已经不能满足大数据时代的信息安全需求&#xff0c;需要专业…

恐怖的ChatGPT,肉哥也All in了!

这段时间真是太刺激了&#xff0c;AI领域几乎每天都会爆出一个超震撼的产品&#xff0c;有一种科幻马上要成现实的感觉。 不知道大家朋友圈是什么样&#xff0c;在整个创业的圈子里面&#xff0c;几乎全是 AI 相关。 就连 N 多年&#xff0c;传说中退休的传统互联网大佬&#x…

ChatGPT 速通手册——不同相似度算法的分值介绍

不同相似度算法的分值介绍 在信息大暴涨的今天&#xff0c;人类已经不可能出现通才、全才式的人物。利用 ChatGPT 来询问我们未知领域的知识是很好的习惯和用法。但对严肃知识的学习&#xff0c;一定要通过权威来源复核审校&#xff0c;保证自己所学知识的正确。否则&#xff…

亚马逊僵尸获取的三种方法 你正在使用哪一种?

亚马逊做跟卖的话是很简单便捷&#xff0c;不用自己大费周章的编写产品的listing 只需要找到一些合适的产品进行跟卖就可以了&#xff0c;还可以找到僵尸产品进行跟卖&#xff0c;我们常用的获取僵尸产品的三种方法&#xff1b; 第一种就是最原始的在亚马逊的商品页去找僵尸产品…

new bing 初体验:辅助看论文刚刚好

1. new bing使用条件 &#xff08;1&#xff09;安装Microsoft edge的dev版本 https://www.microsoft.com/zh-cn/edge/download?formMA13FJ &#xff08;2&#xff09;浏览器侧栏打开 Discover (3) 进入new bing 页面 侧栏展示 new bing 如果这一步&#xff0c;没有聊天功能…

在课堂上使用ChatGPT的三种创意方法

泰晤士世界大学排名. 自1910年从泰晤士报的一个高等教育专栏开始&#xff0c;经过100多年的建设和转变&#xff0c;泰晤士现已是一所世界大学大数据分析的国际机构&#xff0c;同时是获奖无数的国际高教传媒&#xff0c;每日及时报道各国各领域的高教发展趋势和走向。 在课堂上…

ChatGPT的横空出世,带给教育的冲击有多大?

最近很火的ChatGPT想必大家都有所耳闻&#xff0c;短短数日就占据了各大热搜榜单&#xff0c;或许我们无法明晰商业的浪潮&#xff0c;也对技术原理知之甚少&#xff0c;但它的功能却强大到让人叹为观止。 它可以写文章&#xff0c;可以做预算&#xff0c;可以编写代码……甚至…

腾讯工程师聊ChatGPT技术「文集」

想知道 ChatGPT 玩法、核心原理、搭建体验流程、最新竞品吗&#xff1f; 近期&#xff0c;美国人工智能研究机构 OpenAI 发布了最新的大语言模型 ChatGPT&#xff0c;其惊艳的性能在海内外掀起了一波又一波热潮。腾讯云开发者「热技解读」专栏特邀专家&#xff0c;从多方面分享…

2023 Chatgpt php源码

首次使用配置&#xff1a; 请访问 http://你的域名/key.php 配置您的API_KEY列表&#xff0c;程序将全局自动循环调用。默认用户名&#xff1a;admin&#xff0c;默认密码&#xff1a;admin2023。默认用户名密码可以在key.php文件中修改。 本项目完全开源&#xff0c;是PHP版…

GPT-3.5 也能直接联网了!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; ChatGPT 常令人诟病的一个问题&#xff0c;就是它的模型训练数据&#xff0c;迄今为止用的还是 2021 年的老数据。 对于当下这个信息大爆炸时代&#xff0c;相隔两小时&#xff0c;消息都有…

ChatGPT进一步联网,距离成为超级流量入口还有多远?|数智焦点

备受瞩目的ChatGPT联网功能又更进一步。 继三月首次推出插件功能&#xff08;Plugin&#xff09;后&#xff0c;本周ChatGPT再次更新&#xff0c;将向Plus用户开放约70个第三方插件&#xff0c;覆盖购物、餐饮、旅行、天气、运算、翻译、分析数据等多种功能。 一个多月前&…