变量作为函数的参数进行传递
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
确定的值。
#i例nc2l交ud换e两<个st数dio.h>
调用前:x: 7
main()
{ int x=7,y=11;
调用: x: 7
swap(x,y);
printf("%d,%d\n",a,b);
a: 7
} void swap(int a,int b)
ຫໍສະໝຸດ Baidu
swap: a: 11
{ int temp; temp temp=a; a=b; b=temp;
内存的变化情况
a ×1×.2
p
1×.7×28
x
1.2
Please input value of a: 1.2
–1.3参数传递方式
• 值传递方式
–方式:函数调用时,为形参分配单元,并将实参 的值复制到形参中;调用结束,形参单元被释 放,实参单元仍保留并维持原值
–特点:
» 形参与实参占用不同的内存单元 » 单向传递 » 实参可以是常量、变量或表达式,但必须有
{2、in{t zin; t a,b;
3、z=x+yi;nt c;
4、returan=(z3);;b=23; }5、 c=sum(a,b);
x=a
y=b
m6、ain(p)rintf(“sum is {%idn\tna",,bc;);
int sum(int 3x, int 2y3 )
7、in}t c; a=3;b=23;
回收空c间
5x7x
回收空a间
2x3x
xx
回收空间b
3x4x
回收空a间
2x3x
xx
回收空间b
34
回收空间z
57
例 1计算x的立方
#include <stdio.h> float c(float x) { return(x*x*x); } main() { float a, p;
printf("Please input value of a:"); scanf("%f",&a); p=c(a); printf(”Cube of %.4f is %.4f\n",a,p); } 运行情况:
long a;
long sum(int a, int b);
scanf("%d,%d",&n1,&n2);
实参 a=sum(n1,n2); 函数调用 printf("a=%1d",a);
• 1.1 函数参数及其传递方式
–形参与实参
• 形式参数:定义函数时函数名后面括号中的变量名 • 实际参数:调用函数时函数名后面括号中的表达式
例 比较两个数并输出大者 main()
{ int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); (main 函数) c=max(a,b);
scanf("%d,%d",&a,&b); c=sum(a,b); printf(“sum is %d",c); }
{ int z; z=x+y; return(z);
}
main() { int a,b,c;
a=23;b=24; c=sum(a,b); printf(“sum is %d",c); }
2、形参必须指定类型
int x
int y
int sum(int x, int y) { int z;
z=x+y; return(z); }
3、形参与实参类型一致,个数相同
sum(int x, int y,float z) sum(int x, int y,float z)
{ int d;
{ int d;
回收空c间
5x7x
回收空a间
2x3x
xx
回收空间b
3x4x
回收空x间
2x3x
xx
回收空间y
34
回收空间z
57
5、如果实参是变量,则实参和形参的名字可以相同
也可以不同,互不影响,因为它们存储数据的空 间不同。
mmaaiinn(()) {{ iinnttaa,b,b,c,c;;
aa==2233;;bb==3344;; cc==ssuumm((aa,,bb));; pprriinnttff((““ssuummiiss%%dd"",c,c));; }} ssuumm((iinntt aa,,iinntt bb)) {{ iinnttzz;; zz==aa++bb;; rreettuurrnn((zz));; }}
实参
max(int x, int y) (max 函数) printf("Max is %d",c);
{ int z;
}
z=x>y?x:y; return(z); }
max(int x, int y) { int z;
形参
z=x>y?x:y;
return(z);
}
in1、t summa(iinn(t) x, int y)
{ int z; z=x+y; 等价于z=3+23;
c=sum(a,b);
return(z); 等价于sum=z;
printf(“sum is %d\n",c); }
}
• 1.2 函数参数及其传递方式
形参与实参
说明: 1、实参必须有确定的值 sum(int x, int y)
main() { int a,b,c;
}
}
4、形参在函数被调用前不占存储空间;函数调用时为形
参分配存储空间;调用结束,空间释放。
mmaaiinn(()) {{ iinnttaa,b,b,c,c;;
aa==2233;;bb==3344;; cc==ssuumm((aa,,bb));; pprriinnttff((““ssuummiiss%%dd"",c,c));; }} ssuumm((iinntt xx,,iinntt yy)) {{ iinnttzz;; zz==xx++yy;; rreettuurrnn((zz));; }}
printf(“a=%d,b=%d”,a,b) 调用结束:x: 7
}
y: 11 y: 11 b: 11 b: 7
y: 11
#include <stdio.h> long sum(int a, int b);
文件包含编译预处理命令
long factorial(int n);
函数声明
main()
{ int n1,n2;
d=x+y+z;
d=x+y+z;
return(d);
return(d);
}
}
main()
main()
{ int a,b,c; a=23;b=34; { int a=23,b=34,c,f;
c=sum(a,b);
c=sum(a,b,f);
printf(“sum is %d",c); printf(“sum is %d",c);
#i例nc2l交ud换e两<个st数dio.h>
调用前:x: 7
main()
{ int x=7,y=11;
调用: x: 7
swap(x,y);
printf("%d,%d\n",a,b);
a: 7
} void swap(int a,int b)
ຫໍສະໝຸດ Baidu
swap: a: 11
{ int temp; temp temp=a; a=b; b=temp;
内存的变化情况
a ×1×.2
p
1×.7×28
x
1.2
Please input value of a: 1.2
–1.3参数传递方式
• 值传递方式
–方式:函数调用时,为形参分配单元,并将实参 的值复制到形参中;调用结束,形参单元被释 放,实参单元仍保留并维持原值
–特点:
» 形参与实参占用不同的内存单元 » 单向传递 » 实参可以是常量、变量或表达式,但必须有
{2、in{t zin; t a,b;
3、z=x+yi;nt c;
4、returan=(z3);;b=23; }5、 c=sum(a,b);
x=a
y=b
m6、ain(p)rintf(“sum is {%idn\tna",,bc;);
int sum(int 3x, int 2y3 )
7、in}t c; a=3;b=23;
回收空c间
5x7x
回收空a间
2x3x
xx
回收空间b
3x4x
回收空a间
2x3x
xx
回收空间b
34
回收空间z
57
例 1计算x的立方
#include <stdio.h> float c(float x) { return(x*x*x); } main() { float a, p;
printf("Please input value of a:"); scanf("%f",&a); p=c(a); printf(”Cube of %.4f is %.4f\n",a,p); } 运行情况:
long a;
long sum(int a, int b);
scanf("%d,%d",&n1,&n2);
实参 a=sum(n1,n2); 函数调用 printf("a=%1d",a);
• 1.1 函数参数及其传递方式
–形参与实参
• 形式参数:定义函数时函数名后面括号中的变量名 • 实际参数:调用函数时函数名后面括号中的表达式
例 比较两个数并输出大者 main()
{ int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); (main 函数) c=max(a,b);
scanf("%d,%d",&a,&b); c=sum(a,b); printf(“sum is %d",c); }
{ int z; z=x+y; return(z);
}
main() { int a,b,c;
a=23;b=24; c=sum(a,b); printf(“sum is %d",c); }
2、形参必须指定类型
int x
int y
int sum(int x, int y) { int z;
z=x+y; return(z); }
3、形参与实参类型一致,个数相同
sum(int x, int y,float z) sum(int x, int y,float z)
{ int d;
{ int d;
回收空c间
5x7x
回收空a间
2x3x
xx
回收空间b
3x4x
回收空x间
2x3x
xx
回收空间y
34
回收空间z
57
5、如果实参是变量,则实参和形参的名字可以相同
也可以不同,互不影响,因为它们存储数据的空 间不同。
mmaaiinn(()) {{ iinnttaa,b,b,c,c;;
aa==2233;;bb==3344;; cc==ssuumm((aa,,bb));; pprriinnttff((““ssuummiiss%%dd"",c,c));; }} ssuumm((iinntt aa,,iinntt bb)) {{ iinnttzz;; zz==aa++bb;; rreettuurrnn((zz));; }}
实参
max(int x, int y) (max 函数) printf("Max is %d",c);
{ int z;
}
z=x>y?x:y; return(z); }
max(int x, int y) { int z;
形参
z=x>y?x:y;
return(z);
}
in1、t summa(iinn(t) x, int y)
{ int z; z=x+y; 等价于z=3+23;
c=sum(a,b);
return(z); 等价于sum=z;
printf(“sum is %d\n",c); }
}
• 1.2 函数参数及其传递方式
形参与实参
说明: 1、实参必须有确定的值 sum(int x, int y)
main() { int a,b,c;
}
}
4、形参在函数被调用前不占存储空间;函数调用时为形
参分配存储空间;调用结束,空间释放。
mmaaiinn(()) {{ iinnttaa,b,b,c,c;;
aa==2233;;bb==3344;; cc==ssuumm((aa,,bb));; pprriinnttff((““ssuummiiss%%dd"",c,c));; }} ssuumm((iinntt xx,,iinntt yy)) {{ iinnttzz;; zz==xx++yy;; rreettuurrnn((zz));; }}
printf(“a=%d,b=%d”,a,b) 调用结束:x: 7
}
y: 11 y: 11 b: 11 b: 7
y: 11
#include <stdio.h> long sum(int a, int b);
文件包含编译预处理命令
long factorial(int n);
函数声明
main()
{ int n1,n2;
d=x+y+z;
d=x+y+z;
return(d);
return(d);
}
}
main()
main()
{ int a,b,c; a=23;b=34; { int a=23,b=34,c,f;
c=sum(a,b);
c=sum(a,b,f);
printf(“sum is %d",c); printf(“sum is %d",c);