函数调用时的传参方式(C语言) 您所在的位置:网站首页 c语言main函数可以有参数吗 函数调用时的传参方式(C语言)

函数调用时的传参方式(C语言)

2023-06-13 01:19| 来源: 网络整理| 查看: 265

1.值传递

值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 将已初始化的变量值(或常量)传到函数中。把实参赋给形参,形参改动不影响实参。调用函数时,实参需要先进行初始化

void passByValue(int x){ // 值传递 printf("\n--- 值传递函数内部参数情况\n"); x = 6; printf("a=%d, 地址:%p",x,&x); } void main(){ printf("--- 初始参数情况\n"); int a = 1; //, b = 2; printf("a=%d, 地址:%p",a,&a); passByValue(a); printf("\n--- 值传递(主调函数参数情况)\n"); printf("a=%d, 地址:%p\n",a,&a); }

执行结果如下:

2.指针传递(地址传递) 指针学习笔记

main函数中将变量 i 的地址传给函数 passByPointer 时,实际上相当于:j = &i; 仍然是值传递。只不过传递的是指针变量,是值传递就必须先进行初始化。

void passByPointer(int *j){ printf("\n--- 指针传递函数内部参数情况\n"); *j = 66; //间接访问得到变量 i printf("j = %d, j的地址:%p , j 存放的内容:%p",*j,&j,j); } void main(){ printf("--- 主调函数初始参数情况\n"); int i = 6; printf("i = %d, 地址:%p",i,&i); passByPointer(&i); printf("\n--- 指针传递(主调函数参数情况)\n"); printf("i = %d, 地址:%p\n",i,&i); }

通过 *j 间接访问到了与变量 i 相同的区域,通过*j = 66;实现了对变量 i 值的改变。 通过运行结果可发现,变量 j 自身地址与变量 i 自身地址不同

引用传递(C没有,C++特有)

在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

void passByReference(int &m){ m = 6; printf("形参 m = %d 地址:%p\n",m,&m); } int main() { int n = 0; printf("实参 n = %d 地址:%p\n",n,&n); passByReference(n); printf("--- 主调函数 ---\n"); printf("实参 n = %d 地址:%p\n",n,&n); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有