C语言之main函数传参

1:为什么需要给main函数传参

首先要明白一点,给mian函数传参不是必须的,但是有时候我们需要通过给main函数不同的参数来得到的不同的结果,比如我们希望main函数中某个变量的值为0时执行子函数A,该变量值为1时执行子函数B,那么这个时候就可以通过给main函数传参来实现,mian函数传参格式如下:

int main(int argc , char *argv[])
int main(int argc , char **argv)

参数解释:

argc:int类型的参数,表示给mian函数传递了多少个参数

argv 一个字符数组(或者是二重指针),这个数组用来存放多个字符串,每个字符串就是我们给main函数传递的一个参数,需要注意的是我们./a.out执行这个程序时也算是给main函数传递了一个参数

2:谁给main函数传参

在普通的函数a中,它里面的参数是由调用函数a的函数b传递的,同样的,main函数的传参也是有调用main函数的“函数”给main函数传参的,但是我们知道,main函数是一个程序的入口函数,所以给main函数传参的是调用这个程序的一个程序,也就是main函数所在的父进程,并且由这个父进程接受main函数的返回值。

3:main函数传参的本质

程序调用有各种方法但是本质上都是父进程fork一个子进程,然后子进程和一个程序绑定起来去执行(exec函数族),我们在exec的时候可以给他同时传参。程序调用时可以被传参(也就是main的传参)是操作系统层面的支持完成的。举个简单的例子,当我们在控制台下面输入./a.out去执行一个程序的时候,其本质是控制台进程创建了一个子进程去调用我们./a.out这个可执行程序,并负责给这个程序的入口函数也就是main函数传参,并接收其返回值。

时间: 2024-08-07 02:40:42

C语言之main函数传参的相关文章

C++ Primer(第四版) 课后习题7.15 main函数传参

问题:编写一个主函数main,使用两个值作为实参,并输出它们的和. 代码: #include <iostream> #include <stream> using namespace std; //计算两个数的和 int main(int argc, char **argv) { string strName = argv[0]; int a = stoi(argv[1]); int b = stoi(argv[2]); cout<<strName<<&qu

c# 通用类型系统 深拷贝 浅拷贝 函数传参

c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下,变量在内存级的表现情况,对以后的coding应该有些帮助.在此记录以免忘记了... 1. 通用类型系统 先来一张图: 通用数据类型分为了值类型和引用类型. 我们定义一个int型实际上是一个system.int32的实例,在语法上我们像使用其他的类对象一样,但是,存储的的仍然是基本类型.这种把基本类型

【JS学习笔记】函数传参

比如仅仅改变背景的颜色 函数传参:参数就是占位符. 那么在什么时候用传参呢?函数里定不下来的东西. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">

函数传参,改变Div任意属性的值&amp;&amp;图片列表:鼠标移入/移出改变图片透明度

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

js最基础知识回顾2(函数传参,操作属性的第二种方式,提取行间事件,操作一组元素,this,焦点问题和鼠标按下抬起,选项卡)

一.函数传参     1.函数传参:参数就是占位符----函数里定不下来的东西 a. var a1=function(){ alert(123); }; function a(f){ // 相当于 f=a1 f(); }; a(a1); b.  function skip(skipPath){  //换肤 var oLink1 = document.getElementById('link1'); oLink1.href=skipPath; } c.   function setStyle(na

2、函数传参

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>2.函数传参</title> <link href="base.css"> <style> li{ padding-bottom: 50px; } .l{ border: 1px solid #ccc; width

函数传参

C语言函数参数传递的方式可分为3种:值传递,地址传递.(C++中还有引用传递) 通常的建议: 如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间. 因而如果int,char等固有类型,而是你自己定义的类或结构等,都建议传指针或引用,因为他们不会创建新的对象. 1.值传递:就是把你的变量的值传递给函数的形参,实际就是用变量的值来新生成一个形参,因而在函数里对形参的改变不会影响到函数外的变量的值 void exchg1(int x,int y) { in

javascript函数传参

javascript中函数的传参方式是比较奇葩的; javascript并没有按引用传递参数的方式,不严格的说全部为按值传递,但是对于引用类型来说,个人觉得这个像是共享传递 基本类型作为参数传入函数(只是将值复制给函数内部的一个局部变量) var a = 10; function foo(a) { a = 20; return a; } console.log(foo(a));  // 20 console.log(a);   // 10 对于基本类型只是简单的将值赋给函数内部的一个局部变量,所

js函数传参

js所有函数传参都是按值传递 1>传基本参数类型:被传递的值复制给函数形参 function addMath(num){ num += 10; return num; } var counts = 20; var results = addMath(counts); alert("count="+counts+",result="+results); couts未改变,不是按引用传递的 2>传递obj类型 function setName(obj){ o