c语言实参与形参的区别
1 #include<stdio.h> 2 #include<math.h> 3 4 /** 5 * 形参和实参的功能是作数据传送。 6 * 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 7 * 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。 8 * 当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。 9 * 如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。 10 */ 11 12 void swapByPointer(int *p, int *q){ //形参 13 int temp; 14 temp = *p; 15 *p = *q; 16 *q = temp; 17 } 18 19 int main(){ 20 int a = 10, b = 20; 21 swapByPointer(&a,&b); //主调函数中的是实参,有确定的值,把值传给形参 22 printf("a=%d, b=%d ", a, b); 23 }