网站更改机房备案,zencart 网站迁移,动态设计参考网站,网站建设西街1.8 C语言之参数传递 一、参数传递 一、参数传递
在C语言中#xff0c;所有的参数传递都是值传递#xff0c;也就是说#xff0c;传递给被调用函数的参数值存放在临时变量中#xff0c;而不是存放在原来的变量中。这与其他语言的引用传递有所不同。在C语言中#xff0c;被… 1.8 C语言之参数传递 一、参数传递 一、参数传递
在C语言中所有的参数传递都是值传递也就是说传递给被调用函数的参数值存放在临时变量中而不是存放在原来的变量中。这与其他语言的引用传递有所不同。在C语言中被调用函数不能直接修改主调函数中变量的值而只能修改其私有的临时副本的值。
#include stdio.h
int f(int n);int main()
{int n 3;int fn f(n);printf(main函数---变量n:%d\n, n);printf(main函数---f函数返回的n:%d\n, fn);return 0;
}int f(int n) {--n;printf(f函数---变量n:%d\n, n);return n;
}
运行结果:
f函数---变量n:2
main函数---变量n:3
main函数---f函数返回的n:2必要时也可以让函数能够修改主调函数中的变量。在这种情况下调用者需要向被调用者函数提供待修改值的变量的地址即指针而被调用函数则需要将对应的参数声明为指针类型通过指针间接访问变量这就类似于java的引用关于指针后续章节再提。如果是数组参数情况就有所不同了。当把数组名用作参数时传递给函数的是数组起始元素的地址它并不复制数组元素本身。在被调用函数中可以通过数组下标访问或修改数组元素的值。
#include stdio.h
int f(int arr[]);
int printArr(int arr[], int arrLen);int main()
{int arr[3];arr[0] 0;arr[1] 1;arr[2] 0;printf(调用f前-数组元素\n);printArr(arr, 3);int fn f(arr);printf(main函数---f函数返回的值:%d\n, fn);printf(调用f后-数组元素\n);printArr(arr, 3);return 0;
}int f(int arr[]) {arr[0] 2;arr[1] 3;arr[2] 4;return;
}int printArr(int arr[], int arrLen)
{for(int i0; i arrLen; i)printf(index%d--- item: %d\n, i, arr[i]);return;
}运行结果
调用f前-数组元素
index0--- item: 0
index1--- item: 1
index2--- item: 0
main函数---f函数返回的值:8
调用f后-数组元素
index0--- item: 2
index1--- item: 3
index2--- item: 4