C语言 main( ) 函数的指针数组形参是怎么回事?

一、问题

        在使⽤⼀些开发⼯具⽣成C语⾔⽂件时,主函数 mian( ) 中会有参数,这个参数到底是怎么回事⼉呢?

二、解答

        mian( ) 称为主函数,是所有程序运⾏的⼊口。 mian( ) 函数是由系统调⽤的,当处于操作命令状态下,输⼊ mian( ) 所在的⽂件名,系统就调⽤ mian( ) 函数。

        我们经常对 mian( ) 函数始终作为主调函数处理,即允许 mian( ) 调⽤其他函数并传递参数。事实上, mian( ) 函数既可以是⽆参函数,也可以是有参函数。对于有参的形式来说,就需要向其传递参数。

        那么, mian( ) 函数的形参的值从何处得到呢?由于其他任何函数均不能调⽤ mian( ) 函数,不能调⽤⾃然也就⽆法向 mian( ) 函数传递参数,只能由程序之外传递⽽来。这个具体的问题怎样解决呢?下⾯先看⼀下 mian( ) 函数的带参的形式:

main(int argc,char *argv[])

        从函数参数的形式上看,包含⼀个整型和⼀个指针数组。当⼀个C的源程序经过编译和链接后,会⽣成扩展名为.exe 的可执⾏⽂件,这是可以在操作系统下直接运⾏的⽂件。 对于 mian( ) 函数来说,其实际参数和命令是⼀起给出的,也就是在⼀个命令⾏中包括命令名和需要传给 main 函数的参数。命令⾏的⼀般形式为:

命令名     参数1    参数2...参数n。

        命令⾏中的命令就是可执⾏⽂件的⽂件名,其后所跟参数需⽤空格分隔,并作为对命 令的进⼀步补充,也即是传递给 mian( ) 函数的参数。命令⾏与 mian( ) 函数的参数存在如下的关系。

        设命令⾏为:

file1 strl str2 str3

        其中 file1 为⽂件名,也就是⼀个由 file1.c 经编译和链接后⽣成的可执⾏⽂件 file1.exe, 其后各跟3个参数。以上命令⾏与 mian( ) 函数中的形式参数关系如下。

        它的参数 argc 记录了命令⾏中命令与参数的个数(file1、str1、str2、 str3),共4个, 指针数组的⼤⼩由参数的值决定,即为 char *argv[4],该指针数组的取值情况如图所示。

         输出 main( ) 函数参数内容。

#include <stdio.h>
main(int argc, char *argv[])
{printf("The list of parameter:\n");while (argc > 1){++argv;printf("%s\n", *argv);--argc;}
}

        输⼊内容如下所示

Microsoft Windows [版本 5.2.3790] 
〈C〉 版权所有 1985-2003 Microsoft Corp.
C:\Docunents and Settings\Administrator>d:tc\0720 hello mingri I love China

        程序运⾏结果如下所示

Invalid keyboard code specified
The list of paraneter:
hello
mingri
love
ChinaC:\DOGUME~1\ADMINI~1)

三、总结

        对于⼀般程序的开发,我们不会去关⼼ main( ) 函数的参数,有时开发⼯具会⾃动⽣成, 有时会⼿动删除,这些内容在程序编译时系统会⾃动进⾏相应的设置。

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

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

相关文章

【算法】滑动窗口——最大连续1的个数

本篇文章讲的是“最大连续1的个数”这道题&#xff0c;从最开始的简单暴力到用滑动窗口算法实现解题的思路历程&#xff0c;有需要借鉴即可。 目录 1.题目2.暴力求解3.滑动窗口解法3.1优化一&#xff1a;end重返start优化&#xff0c;end指针不回退3.2优化二&#xff1a;某一st…

【Android项目】“追茶到底”项目介绍

没有多的介绍&#xff0c;这里只是展示我的项目效果&#xff0c;后面会给出具体的代码实现。 一、用户模块 1、注册&#xff08;第一次登陆的话需要先注册账号&#xff09; 2、登陆&#xff08;具有记住最近登录用户功能&#xff09; 二、点单模块 1、展示饮品列表 2、双向联动…

Go语言系统学习笔记(一):基础篇

1. 写在前面 公司的新业务开发需要用到go语言&#xff0c;虽然之前没接触过这门语言&#xff0c;但在大模型的帮助下&#xff0c;边看项目边写代码也能进行go的项目开发&#xff0c;不过&#xff0c;写了一段时间代码之后&#xff0c;总感觉对go语言本身&#xff0c;我的知识体…

加密技术在保护企业数据中的应用

加密技术是企业数据保护的核心&#xff0c;对于维护信息安全至关重要。透明加密技术使文件加密后不改变用户对文件的使用习惯&#xff0c;内部文件打开自动解密&#xff0c;存储自动加密&#xff0c;一旦离开使用环境&#xff0c;加密文件将无法正常读取&#xff0c;从而保护文…

大模型+智能眼镜,让失明人士也能无障碍阅读

你有没有想过有一天你闭上眼睛也可以进行流畅阅读呢&#xff1f; 不是民科&#xff0c;也不是量子波动速读&#xff01;借助大语言模型和智能眼镜&#xff0c;来自维也纳工业大学、罗马第一大学和明尼苏达大学的研究者&#xff0c;提出了一种无需视力也能阅读的辅助系统&#…

使用fitten code插件(vscode),替换通义千问,识别需求中的输入输出

今天我们介绍一个工具,具体介绍可以参考我的这篇文章的介绍,支持vs code 插件,Fitten Code是一款由非十科技开发的AI代码助手,旨在通过大模型驱动来提升编程效率和体验-免费神器-CSDN博客https://blog.csdn.net/lijigang100/article/details/137833223?spm=1001.2014.3001…

Windows Server 2003安装DHCP服务器

0x00 前言 需要一个dhcp服务器&#xff0c;但是电脑只有一个windows server 2003&#xff0c;凑合着用的。 0x01 安装DHCP服务器 1. 打开控制面板&#xff0c;添加删除程序–添加/删除Windows组件–网络服务&#xff0c;勾选网络服务。 2. 点击【详细信息】&#xff0c;勾选…

深入Django:用户认证与权限控制实战指南

title: 深入Django&#xff1a;用户认证与权限控制实战指南 date: 2024/5/7 18:50:33 updated: 2024/5/7 18:50:33 categories: 后端开发 tags: AuthDecoratorsPermissionsGuardianRESTAuthSessionMgmtMFA 第1章&#xff1a;入门Django与设置 1.1 Django安装与环境配置 在…

Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】

1、数组 特别需要注意的是&#xff1a;在 Go 语言中&#xff0c;数组长度也是数组类型的一部分&#xff01;所以尽管元素类型相同但是长度不同的两个数组&#xff0c;它们的类型并不相同。 1.1、数组的初始化 1.1.1、通过初始化列表{}来设置值 var arr [3]int // int类型的数…

Terraform资源

资源是Terraform中最核心的部分&#xff0c;使用Terraform的目的就是用于管理资源。 在Terraform中&#xff0c;资源使用resource块定义。 一个resource可以定义一个或多个基础设施资源对象&#xff0c;如&#xff1a;VPC&#xff0c;虚拟机&#xff0c;DNS记录&#xff0c;Con…

渗透测试流程

一、攻击流程 信息收集阶段→漏洞分析阶段→攻击阶段→后渗透阶段 二、信息收集 1、收集内容&#xff1a; IP资源&#xff1a;真实IP获取、旁站信息收集、C段主机信息收集域名发现&#xff1a;子域名信息收集、子域名枚举发现子域名、搜索引擎发现子域名、第三方聚合服务器发…

4G工业路由器快递柜应用案例(覆盖所有场景)

快递柜展示图 随着电商的蓬勃发展,快递行业迎来高速增长。为提高快递效率、保障快件安全,智能快递柜应运而生。但由于快递柜部署环境复杂多样,网络接入成为一大难题。传统有线宽带难以覆盖所有场景,而公用WiFi不稳定且存在安全隐患。 星创易联科技有限公司针对这一痛点,推出了…

好消息|5月6日起换发补发出入境证件可“全程网办”

国家移民管理局从2024年5月6日起&#xff0c;实施若干便民利企出入境管理的六项政策措施&#xff0c;包括在北京等20个城市试点实行换发补发出入境证件的“全程网办”&#xff0c;该举措对于访问学者、博士后研究人员及联合培养博士都是利好消息。故知识人网小编转载发布。 为更…

类和对象之六个默认成员函数

目录 1.构造函数 2.析构函数 3.构造函数&#xff08;重载&#xff09; 4.拷贝构造 4.1特征&#xff1a; 4.2写法&#xff1a; 4.3浅拷贝和深拷贝 5.运算符重载 6.&运算符重载和const成员 6.1权限问题 Date类中是否加const修饰 6.2取地址及const取地址操作符重载…

vue-img-cutter 图片裁剪详解

前言&#xff1a;vue-img-cutter 文档&#xff0c;本文档主要讲解插件在 vue3 中使用。 一&#xff1a;安装依赖 npm install vue-img-cutter # or yarn add vue-img-cutter # or pnpm add vue-img-cutter 二&#xff1a;构建 components/ImgCutter.vue 组件 <script se…

sh包装脚本

两个脚本,运行的时间间隔分别是一分钟和五分钟,放入到sh文件中,挂在后代,脚本里面的路径最好是绝对路径。 新建sh文件 新建 run_test.sh 文件,使其可以运行两个不同的 Python 脚本,一个每分钟运行一次,另一个每五分钟运行一次。下面是修改后的 run_test.sh 文件的示例:…

光伏SRM供应商管理解决方案

供应商管理是光伏企业中重要的一环&#xff0c;通过SRM管理供应商&#xff0c;可以提高产品质量&#xff0c;降低采购成本&#xff0c;并集成供应链&#xff0c;提高核心竞争力。 一、搭建管理系统 分为供应商和商户&#xff0c;供应商需要完善基本信息、类别、等级、产品概要…

大历史下的 tcp:一个松弛的传输协议

如果 tcp 是一个相对松弛的协议&#xff0c;会发生什么。 所谓松弛感&#xff0c;意思是它允许 “漏洞”&#xff0c;允许可靠传输的不封闭&#xff0c;大致就是&#xff1a;“不求 100% 可靠&#xff0c;只要 90%(或多或少) 可靠&#xff0c;另外 10% 的错误可检测到” or “…

Python扩展模块的开发

有关python C扩展开发的教程可以参考概述 — Python 3.12.3 文档。项目已经发布至python官方的pypi里了。具体详情请见AdroitFisherman PyPI。目前该项目还处在测试阶段。尚有部分模块需要开发和测试。 项目结构 项目结构见下图&#xff1a; 代码展示与说明 以单链表(SingleL…

5.7代码

1.环境治理 分析&#xff1a;最开始进入了一个误区&#xff0c;觉得都有通路了直接算通路就可以&#xff0c;后来才发现居然是最小路径的总和&#xff0c;所以大概是每减一次都要算一次各点之间的最小路径了&#xff0c;然后是循环&#xff0c;到需要的条件为止 总的来说思路不…