发布时间:2023-09-02 14:00
c语言中函数调用时会发生形参实例化,讲人话就是说在函数调用时形参会生成临时变量,在栈上开辟空间,形成该函数所对应的栈帧,函数内的定义的变量在该函数的栈帧内开辟空间,在函数调用结束时,该函数的栈帧就会释放。其在函数调用时形成的临时变量也会释放。所以一般的传值传参不会改变实参的值。但是若是函数的形参是指针变量的话在调用函数时将变量的地址传递给指针,在函数内部对函数进行解引用改变指针的值那么相应实参所对应开辟空间的里的值会改变,但其地址仍不变。这就是所谓的传址传参。这种传参方式可以让函数和函数外边的变量建立起真正的联系。如这里举一个最简单的例子,交换两个变量的值。
//址传递 include
int main() { int a = 4, b = 5; Change(&a, &b); printf(\"%d %d\", a,b);//输出结果为5 4 system(\"pause\"); return 0; } void Change(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; }
//值传递 #include
int main() { int a = 4, b = 5; void Swep(a, b); printf(\"%d %d\", a, b); system(\"pause\"); } void Swep(int x, int y) { int temp; temp = x; x = y; y = temp; }