当前位置:首页 » 编程语言 » c语言参数传送
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言参数传送

发布时间: 2022-12-27 13:00:35

c语言如何传送参数

main()主函数
每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
在哪个地方, 以下几点说明都是适合的。
1. main() 参数
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
* argc: 整数, 为传给main()的命令行参数个数。
* argv: 字符串数组。
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
以下的版本, argv[0]为空串("") 。
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
argv[2] 为执行程序名后的第二个字符串;
...
argv[argc]为NULL。
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
\TURBOC(对于PATH) 或YES(对于87)。
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
的局部变量。
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
的例子:
main()
main(int argc)
main(int argc, char *argv[])
main(int argc, char *argv[], char *env[])
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
用argv[]的情况。
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
/*program name EXAMPLE.EXE*/
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[], char *env[])
{
int i;
printf("These are the %d command- line arguments passed to
main:\n\n", argc);
for(i=0; i<=argc; i++)
printf("argv[%d]:%s\n", i, argv[i]);
printf("\nThe environment string(s)on this system are:\n\n");
for(i=0; env[i]!=NULL; i++)
printf(" env[%d]:%s\n", i, env[i]);
}
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
C:\example first_argument "argument with blanks" 3 4 "last but
one" stop!
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
with blanks"和"Last but one")。
结果是这样的:
The value of argc is 7
These are the 7 command-linearguments passed to main:
argv[0]:C:\TURBO\EXAMPLE.EXE
argv[1]:first_argument
argv[2]:argument with blanks
argv[3]:3
argv[4]:4
argv[5]:last but one
argv[6]:stop!
argv[7]:(NULL)
The environment string(s) on this system are:
env[0]: COMSPEC=C:\COMMAND.COM
env[1]: PROMPT=$P$G /*视具体设置而定*/
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/

应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
括参数间的空格), 这是由DOS 限制的。

② C语言中的参数传递方式有哪些

是函数参数的传递方式吧。c语言的话是:值传递和指针(地址)传递。c++的话除了c语言的两种方式外还有引用传递。

③ 在C语言中参数是如何传递的

通过参数列表来传递

c 语言函数的基本结构

  1. 返回值类型;
  2. 函数名;
  3. 参数列表,参数列表中的参数类型;
  4. 函数体。

④ c语言函数参数传递方向

C语言中函数参数传递的三种方式(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数

⑤ 在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。

函数实参与形参之间的数据传递方式是( 值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于。

那么对行参的修改,不会影响实参的值 。引用传递: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对象,因此对形参的修改会影响到实参。

(5)c语言参数传送扩展阅读

传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。

引用传递是将变量的内存地址传递给方法,方法操作变量时会找到保存在该地址的变量,对其进行操作。会对原变量造成影响。可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

⑥ C语言函数调用参数传递的是什么

ARM编程中使用的C语言是标准C语言,ARM的开发环境实际上就是嵌入了一个C……当进行函数调用时,使用r0和r1实现参数传递,返回结果由r0带回。函数调用

⑦ C语言 参数传递问题

#include<stdio.h>
#include<malloc.h>
char*gn1(chara[],intlength)
{
char*b=(char*)malloc(length*sizeof(char));
inti,k=0;
for(i=0;i<length;i++)
{
intj=0x80;
for(;j;j>>=1)
if(j&a[i])
b[k++]=1;
else
b[k++]=0;
}
returnb;
};
intmain()
{
chara_1[6],*b_1;
inti_1;
for(i_1=0;i_1<6;i_1++)
scanf("%c",&a_1[i_1]);
b_1=gn1(a_1,6);
for(i_1=0;i_1<48;i_1++)
printf("%d",(int)b_1[i_1]);
return0;
}

⑧ C语言数组当参数传递

在学习C语言的过程中遇到数组作为参数传递的问题

一维数组:

这样我们可以很顺利的在test去遍历这个数组a,当然我们还可能传递指针:

一般来数参数的传递是值传递,也就是说实参传给形参,形参发生改变时实参并不会改变,(单向)但是数组在传递的时候是地址传递,只要形参发生了变化,实参也会发生变化(双向)。

这样传递数组就会发现一个问题,我没有办法获取到数组的长度。获取数组的长度我们一般用:

我们会发现n的值一直是2!为什么会这样呢!?
因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在64位机上是8个字节。int类型是4个字节,所以,结果永远是2,因此,我们要向获取数组长度要怎么办呢?

我可以在初始化数组的地方获取到数组的长度,作为参数传递过来:

这样做我们可以获取到数组的长度。

二维数组:

二维数组作为参数传递是后我们不可以像以为数组那样直接,如:

会发现编译都编译不通过,报“[Error] declaration of 'a' as multidimensional array must have bounds for all dimensions except the first”这个错,意思是多维数组的定义必须有一个除第一个之外的所有维度的边界,比如:

这样就OK了,但是我们是动态分配的数组不知道这个维度是多少的时候怎么办?这时候我们可以用指针当做一维数组来操作:

这样我们发现不能更灵活的去定位到某一行某一列,这样我们需要手工改变寻址方式:

⑨ c语言函数调用时,参数是如何传递的

建立中间变量(形参),把实参值赋值给中间变量,当被调函数返回值时,系统释放掉中间变量。

在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。



(9)c语言参数传送扩展阅读:

C语言中又规定在以下几种情况时可以省去主调函数中对被调函数的函数说明。

1、如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整型处理。例8.2的主函数中未对函数s作说明而直接调用即属此种情形。

2、当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。例如例8.1中,函数max的定义放在main 函数之前,因此可在main函数中省去对max函数的函数说明int max(int a,int b)。

3、如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。