赞
踩
在C语言中,形参默认是通过值传递的方式将实参传递给函数的。这意味着函数内部无法直接修改实参的值,只能修改形参的值,而实参的值不会受到影响。
但是,在通过指针传递参数时,可以通过传递指向实参地址的指针来实现通过函数修改实参的值。指针作为形参,其实质是将实参的地址传递给函数,因此在函数内部可以通过指针访问实参的值,并进行修改。
下面是一个额外的例子,展示了如何在函数中使用指针修改数组的值:
- #include <stdio.h>
-
- // 使用指针修改数组元素的值
- void change_array(int *arr, int size) {
- for(int i=0; i<size; i++) {
- arr[i] *= 2;
- }
- }
-
- int main() {
- int arr[5] = {1, 2, 3, 4, 5};
- int size = 5;
-
- printf("Original array:\n");
- for(int i=0; i<size; i++) {
- printf("%d ", arr[i]);
- }
-
- // 调用函数以修改数组
- change_array(arr, size);
-
- printf("\nModified array:\n");
- for(int i=0; i<size; i++) {
- printf("%d ", arr[i]);
- }
-
- return 0;
- }
输出结果为:
- Original array:
- 1 2 3 4 5
- Modified array:
- 2 4 6 8 10
在这个例子中,我们定义了一个函数change_array
,它有两个形参:一个指向数组元素的指针arr
和数组大小size
。函数使用循环访问数组,并将每个元素的值乘以2,从而修改了整个数组中元素的值。
在主函数中,我们定义了一个包含5个元素的数组,并调用函数change_array
,将数组名作为实参传递给函数。由于数组名本身就是指向数组首元素的指针,因此可以直接将数组名作为指针传递给函数。
需要注意的是,在使用指针修改数组元素时,需要确保指针所指向的数组元素的类型和指针的类型匹配,避免出现类型不匹配的错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。