c语言函数的调用
1. c语言函数调用的三种方式并分别举一例。
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);
}
(1)c语言函数的调用扩展阅读:
printf用法:
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d ",a);
输出结果为a=1234。
2. c语言中怎么调用函数谢谢
C语言中,函数调用的一般形式为:函数名(实际参数表)对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
#include<stdio.h>
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y) // 函数首部
{ // {}中的语言为函数体
return x>y ? x : y; // 返回x和y中较大的一个数
}
函数实参
函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。
所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。对此,各系统的规定不一定相同。介绍printf 函数时已提到过,这里从函数调用的角度再强调一下。
以上内容参考:网络-函数调用
3. C语言中函数调用的问题
不是没调用,而是函数写得不对:
#include<stdio.h>
void inverse(int *p,int m, int n)
{ int *p1 = p+m-1;
int *p2 = p+n-1;
int t;
while(p1 < p2)
{
//交换p1,p2指向单元的值
t = *p1;
*p1 = *p2;
*p2 = t;
p1++;
p2--;
}
}
int main(int argc, char* argv[])
{ int array[10] = {1,2,3,4,5,6,7,8,9,10};
int m = 3;
int i,n = 7;
inverse (&array[0],m,n);
for(i = 0; i < 10; i++)
{ printf("%d ",array[i]);
}
return 0;
}
4. c语言如何实现函数的调用
函数名加(实参),这样吧...举个例子你看一下...
int add(int x,int y)
{
int x,y;
int z;
z=x+y;
return z;
}//定义一个z=x+y的函数
int main()//主函数
{
int a=10,b=20;
int m;
m=add(a,b);//这句就是函数的调用...调用了add函数
printf("%d",m);
return m;
}
理解了没...还没的话...仔细看下教材...这个问题很容易解决的...
5. C语言函数的调用和定义
你首先需要知道这个函数需要什么参数,举个例子来说一个函数的函数原型是
int
a(int
x),那么你在使用它的时候它的时候就要注意
要传递给他的是一个int
类型的变量,它会返还给你一个int
类型的变量
例如
b=a(c);
b和a都是int类型的
6. c语言中怎么调用自己定义的函数
在使用一个函数之前必须先对他进行声明:
//void B();声明B函数的存在。void A(){B();//非法,程序执行到此时并不知道B函数的存在。}void B(){}
或者
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int fa(int n)
{
int a;
for(a=2;a<=sqrt(n*1.0),n%a!=0;a++);
if(a>sqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",&n);
(6)c语言函数的调用扩展阅读
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int fa(int n)
{
int a;
for(a=2;a<=sqrt(n*1.0),n%a!=0;a++);
if(a>sqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",&n);
if(fa(n)==1)
printf("n");
else
printf("y");
system("pause");
exit(0);
}
7. C语言函数如何相互调用
A函数中做判断就可以了
type_ A(...)
{
while(1)
{
//do something
if(...) //check
{
B();
//执行B后会继续循环。 如果要重新开始循环,可以把相关变量重新初始化
}
}
}
8. c语言函数调用
直接调用即可。如下示例: #include#define sum(b,c){int d=0;d=b+c;printf("两者的和:%d\n",d);}int main(){ int x=0,y=0; scanf("%d%d",&x,&y); sum (x,y); return 0;} 拓展资料使用宏函数或者宏函数时,注意如下几点: 1.宏函数的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。 2.宏函数定义要注意格式,尤其是括号。如果上面的宏函数写成 #define MAX(a, b) (a>b?a:b),省去内层括号,则宏展开就成了k = (i&0x0f>j&0x0f?i&0x0f:j&0x0f),运算的优先级就错了。同样道理,这个宏定义的外层括号也是不能省的。若函数中是宏替换为 ++MAX(a,b),则宏展开就成了 ++(a)>(b)?(a):(b),运算优先级也是错了。 3.宏函数往往会导致较低的代码执行效率。 若是普通函数,则通过递归,可取的最大值,时间复杂度为O(n)。但若是宏函数,则宏展开为( a[n]>max(n-1)?a[n]:max(n-1) ),其中max(n-1)被调用了两遍,这样依此递归下去,时间复杂度会很高。
9. C语言函数调用问题
主函数后面的大括号后面怎么还有语句?这后面不能有语句。去掉dfffdfadffs;这一行。函数int
func(int
a,int
b)要求传递两个实参,r=func((a--,b++,a+b),c--);传递的第一个实参是个逗号表达式,最后一个表达式才是实参,只要看最后一个表达式的结果就行,a--后为5,b++后为8,a+b就成了13,所以第一个实参是13,第二个实参是c,为8,所以z+=a+b后z的值为13+8,即21。函数传递完参数后,c--,所以c变为7。
10. c语言函数的调用和声明
假设主函数main()。其他函数void fun(int a,int *b)。
关于函数定义和声明:
在代码中fun函数,有完整函数体的代码就是函数定义部分,比如void fun(int a,int *b){。。。};。
如果没有具体实现的函数体代码(也就是大括号内容),那么就是函数声明。比如void fun(int ,int *);
关于函数声明和调用:
如果fun函数定义在main代码上面。比如:
void fun(int a,int *b){。。。};
int main(){
int a=0,int b=0;
......
fun(a,&b);//这里fun定义代码在main上面,所以可以不需要声明。反之需要先写声明语句
return 0;
}
关于函数局部变量及全局变量:
简单区分:
定义在函数之外的就是全局变量,这个变量所有函数都可以直接使用,并且共用同一个地址。任意函数修改了变量值,其他函数调用也会变。
定义在函数之内的就是局部变量,局部变量只属于该函数,其他函数即使定义了同样名字的变量,这两个变量也不同地址,互不相干。
比如:
int a;//这就是全局变量,作用域下所有函数共用
int main()
{
int b;//这就是局部变量,只在本函数有效,如果想在调用fun函数时让fun也使用该变量,需要把这个变量的地址作为参数传递过去。
printf("%d",b);
return 0;
}
注意:c语言中允许局部变量和全局变量同名,但是同名的局部变量会屏蔽全局变量,实际代码避免同名。
关于函数传值和传址:
如函数void fun(int a,int *b){..........};这里形参a 和*b,分别表示一个值和一个地址
所以在调用该函数时,比如:
int main()
{
int c,d;
fun(c,&d);//这里调用就对应上面形参类型,第一个参数传递了c的值(传值),第二个参数传递了d的地址(传址),这里c和&d,叫做实参。当fun函数运行时改变了a和b指向地址的值,对应main函数中c的值不变,d的值改变。
return 0;
}
顺带一说:局部变量,在函数运行结束后会自动释放,所以想把局部变量地址作为返回值,需要用malloc函数申请。(这里看不懂可以暂时忽视)