发布网友 发布时间:2022-04-21 21:53
共4个回答
热心网友 时间:2022-04-10 01:17
1、值传递,创建变量x和y,x的值等于a的值,y的值等于b的值
void Exchg1(int x, int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(“x=%d,y=%d/n”,x,y)
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf(“a=%d,b=%d/n”,a,b)
}
2、地址传递,相当于建立了px和py两个指向整型的指针,其值分别为a和b的地址
Exchg2(int *px, int *py)
{
int tmp=*px;
*px=*py;
*py=tmp;
print(“*px=%d,*py=%d/n”,*px,*py);
}
main()
{
int a=4;
int b=6;
Exchg2(&a,&b);
Print(“a=%d,b=%d/n”, a, b);
}
3、引用传递,x和y直接引用a和b,对a和b操作,相当于给a、b起了别名x、y
Exchg2(int &x, int &y)
{
int tmp=x;
x=y;
y=tmp;
print(“x=%d,y=%d/n”,x,y);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
printf用法:
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d\n",a);
输出结果为a=1234。
热心网友 时间:2022-04-10 02:35
C++函数调用有三种常见方式:thiscall,__cdecl,__stdcall
今天看了篇介绍的文章,才比较清楚了点。thiscall,用于类的成员函数调用,
__thiscall对每个函数都增加了一个类指针参数
class
aa
{
void
bb(int
cc);
};
实际上bb的函数原形是void
bb(aa
&this,
int
cc);
以前知道类的成员函数在调用时会传入一个this指针,而不晓得thiscall就是专门指定了这种调用方式。__cdecl调用方式即为C,C++默认的调用方式。
void
Input(
int
&m,int
&n);/*相当于void
__cdecl
Input(int
&m,int
&n);*/
其特点是:1,由主调用函数进行参数压栈并且恢复堆栈;2,在主调用函数中进行实参的压栈并且顺序是从右到左;3,由于主调用函数管理堆栈,所以可以实现变参函数。
__stdcall则是标准调用方式,实际上就是PASCAL,CALLBACK,WINAPI
,其特点是:_主调用函数中负责压栈,在被调用函数中负责弹出堆栈中的参数,并且负责恢复堆栈。因此不能实现变参函数,参数传递是从右到左。另外,命名修饰方法是在函数前加一个下划线(_),在函数名后有符号(@),在@后面紧跟参数列表中的参数所占字节数(10进制),如:void
Input(int
&m,int
&n),被修饰成:_Input@8
。
热心网友 时间:2022-04-10 04:10
按函数调用在程序中出现的位置,有三种函数调用方式
1.表达式方式
函数调用出现在一个表达式中,这种表达式称为函数表达式这时要求函数返回一个确定的值以参加表达式的运算
例如:y—max(a,b)+max(c,d),两次函数调用都是表达式的一部分,分别以返回a与b、c与d的最大值参与表达式运算
2.语句方式
把函数调用作为一个语句常用于只要求函数完成一定的操作,不要求函数返回值这在scanf()函数及printf()函数的调用中已多次使用
在其它高级语言中,函数的调用只能以表达式方式进行C语言中的语句方式调用,实际还是以表达式方式调用为基础
3.参数方式
函数调用作为另一个函数的实参
例如:m:max(max(a,b),max(c,d)),max(a,b)与maX(c,d)两次函数调用作为另一次max()函数调用的实参,用来求出a、b、c、d的最大值
以参数方式调用实际上是表达式调用方式的一种特殊情况 >
热心网友 时间:2022-04-10 06:01
对于系统函数来说,有些函数调用时无参数,有些有多个参数