A. c语言中实际参数和形式参数的设置及传递方式
C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。
下面通过举例来说明实参和形参的设置方法以及传值与传地址的两种函数调用方式。
值传递方式:
#include<stdio.h>
voidfun(inta,intb)//此处a,b为形参
{
a++;
b++;
}
voidmian()
{
inta=1,b=2;
fun(a,b);//按传值方式调用函数fun,此处a,b为实参
printf("%d,%d ",a,b);//输出a=1,b=2
}
地址传递方式:
#include<stdio.h>
voidfun(int*a,int*b)
{
*a=4;
*b=5;
}
voidmian()
{
inta=1,b=2;
fun(&a,&b);//按传地址方式调用函数fun
printf("%d,%d ",a,b);//输出a=4,b=5
}
B. C语言函数调用参数传递的是什么
分两种,一种是按值传递,一种是按地址传递,
按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!
按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!
C. c语言 数组作为参数传递
调用时实参只写数组名不加方括号就是引用数组整体
D. C语言中的参数传递方式有哪些
是函数参数的传递方式吧。c语言的话是:值传递和指针(地址)传递。c++的话除了c语言的两种方式外还有引用传递。
E. c语言形参和实参是怎样传递数据的
我简单描述一下~c语言传递参数机构是这样的~非指针类的数据传递参数时传数值,指针类数据传递参数时传地址
(这里数组名也算指针)
比如
int max(int a,int b);
这时候如果调用这个函数max(x1,x2);仅仅将x1和x2的数值传递给函数max,a与x1占有不同的内存区域
int max(int *a,int *b);
这时候如果调用这个函数max(&x1,&x2);则将x1、x2的地址传递给a、b,a指向x1的地址,也就是说a可以操控x1的数值。
如果想具体了解可以参看谭浩强教授写的~c语言程序设计~很好很强大~
F. C语言函数参数传出怎么用
struct Student st;
void function(struct Student st);这种形式就是传递地址;
void fuction2(struct Student * pst);这种形式就是传递结构体的地址;
调用这两个函数的形式如下:
function(st);
fuction2(&st);
一般推荐第二种方式,因为第一种方式需要传递整个结构体,需要开辟sizeof(struct student)这么大的内存空间,开销太大,第二种方式则只需要开辟四个字节的内存,用来存放地址;
G. c语言中,带参数的主函数,如何传递参数给它
不可能按值传递的,设想一下
type
*arr
=。。。。。
sizeof(arr)为100万了字节,如果按照值传递,就要创建一个临时变量temp也为100万个字节,效率岂不是太低了。再可能arr是堆内存,参数传递是要属性相同,值相同,难道系统自行去new一段内存,这该用户去释放
还是系统自动回收呢?
H. c语言中,带参数的主函数,如何传递参数
是将实参的值按一定顺序赋给形参
值的传递是单方面的
形参值的改变并不影响实参
I. 关于C语言的参数传递顺序……
楼主您好,首先您要理解一下i++的行为,即先用i,然后再++,所以,传递参数时先用i=1的值,用完了然后++,即先用x=y=1=i,然后i=2;我把程序给您改一下,你就会根据结果看的很明白了。
#include <stdio.h>
int f(int x,int y)
{
printf("x=%d\n",x);//显示传递过来的i值
printf("y=%d\n",y); //显示传递过来的i++值
if(x>y) return 1;
else if(x<y) return -1;
else return 0;
}
int main()
{
int i=1;
int k;
k=f(i,i++);
printf("i=%d\n",i);//显示执行完函数后i的值
printf("k=%d\n",k);
return 0;
}
结果:x=1 y=1 i=2 k=0
楼主您的部分理解是对的,而结果有时候跟编译器有关,它的编译顺序是不一样的。
f(++i,i) 和f(i,++i)运行结果都与理解一致, f(i++,i) 和f(i,i++)运行结果与理解不一致;++是一种缩写,对于y=i++,就是y=i,然后i=i+1;对于y=++i,就是i=i+1,然后y=i.
J. C语言中main()的参数传递
传进来的都是指向字符串类型的指针,不能直接用==判断,得用strcmp函数来做。
if(strcmp(argv[1],"/ON")||strcmp(argv[2],"1"))