形式参数:定义函数时括号中的变量。只有被调用时才被初始化,函数调用完成后自动销毁,只在函数中有效。
实际参数:真实传递给函数的参数,可以是常量、变量、表达式、函数等。无论实参是何种类型,在调用函数是必须有确定的值。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>void Swap(int x, int y)
{int s = 0;s = x;x = y;y = s;
}int main()
{int a = 0;int b = 0;scanf("%d%d", &a, &b);printf("交换前:a=%d b=%d\n", a, b);Swap(a, b);printf("交换后:a=%d b=%d\n", a, b);return 0;}
通过分析后,代码对应的内存分配如下: 这里可以看到 Swap1 函数在调用的时候, x , y 拥有自己的空间,同时拥有了和实参一模一样的内容。 所以我们可以简单的认为:形参实例化之后其实相当于实参的一份临时拷贝。
也就是说临时拷贝的变量是处在函数中的,函数又是局部范围,x,y一旦出了函数的作用域便会被销毁
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>void Swap(int* px, int* py)
{int s = 0;s = *px;*px = *py;*py = s;
}int main()
{int a = 0;int b = 0;scanf("%d%d", &a, &b);printf("交换前:a=%d b=%d\n", a, b);Swap(&a, &b);printf("交换后:a=%d b=%d\n", a, b);return 0;}