#include<stdio.h>
int func(int a,int *p); viod main() { int a=1,b=2,c; c=func(a,&b); b=func(c,&a); a=func(b,&c); printf("a=%d,b=%d,c=%d",a,b,c); } int func(int a,int *p) { a++;*p=a+2; return(*p+a); 程序没读懂,谁能帮忙看看,解释一下 |
func是一个函数,包含两个参数,一个基本类型,一个指针;在main函数中对func进行调用。
这里需要注意两点:一个是参数的传递。一般有两种方式:值传递和地址传递,有时简称为传值和传址。
第二点是:实参与形参各自有自己的内存空间和作用域,可以同名也可不同。
采用传值方式在被调函数中形参发生的改变返回到主调函数后相应实参并不改变,因为他们各自占用不同内存,且参数传递是单向的,只能从实参向形参传递。
采用传址方式,由于实参和形参执行的同一个内存单元,所以在被调函数中所做的改变能反应到主调函数中。
中间具体分析过程就不写了,太长了。最好自己上机做个单步调试(F10或F11),看看变量的值如何发生变化。
最后结果:a=36,b=16,c=19
主要就是输入的参数P是会被改变得。
单步调试下,可以加深理解