当前位置: 首页 > article >正文

C++ 函数的参数传递

函数的参数传递 

1、函数的形参的内存空间问题: 

在未调用函数前,函数中的形式参数并不分配内存空间。只有在被调用执行时,才被分配临时存储空间。
函数调用结束后,形式参数的内存空间将被操作系统立刻收回。

2、函数的参数:

实际参数可以是任何符合形式参数类型的常量、变量、表达式。
函数参数传递的过程就是实际参数和形式参数相结合的过程, 
必须遵守三个一致:个数一致,顺序一致,类型一致。     √√√

3、函数参数的传递方式,或者说函数参数的调用方式分为三种:

(1) 传值(调用):函数形参变,原值不变   √√√

#include<iostream>
using namespace std;
void swap(int x,int y){
    int temp;
    temp = x;
    x = y;
    y = temp;
    cout << "传值:x=" << x <<  " " << "y=" << y << endl;
 }
int main(){
    int a = 10,b = 50;
    swap(a,b);
    cout << "原值:a=" << a << " "  << "b=" << b << endl;
    return 0;
}
输出(函数中传值只会变形参的值,原值不变):
传值:x=50 y=10
原值:a=10 b=50 

(2) 传址(调用):函数形参变了,原值也会变  √√√

#include<iostream>
using namespace std;
void swap(int *x,int *y){// 形式参数的类型定义为指针
   int temp;
      temp = *x;
      *x = *y;
      *y = temp;
      cout << "传址:x=" << *x <<  " " << "y=" << *y << endl;
}
int main(){
     int a = 10,b = 50;
     swap(&a,&b);// 实际参数必须是地址
     cout << "原值:a=" << a << " "  << "b=" << b << endl;
     return 0;
}
输出(传址:函数形参变了,原值也会变 ):
传址:x=50 y=10
原值:a=50 b=10

(3) 引用(调用):

(1.1)int& k_adr = k,导致地址相同,值之后会一同进行改变 √√√
#include <iostream>
using namespace std;
int main(){
    int k = 32;
    // 因为int& k_adr = k,所以k与 k_adr de地址现在一样,以后值一起改变 
    int& k_adr = k;
    cout <<  " int& k_adr = k的结果: "<<  " k= " << k <<  " k_adr= " << k_adr << endl;
    k++; 
    cout <<  " k++ 的结果:"<<  " k= " << k <<  " k_adr= " << k_adr <<endl;
    k_adr = -5;
    cout <<  " k_adr = -5的结果: "<<  " k= " << k <<  " k_adr= " << k_adr << endl;
    int i = 100;
    k_adr += i;
    cout <<  " i = 100,k_adr += i的结果: "<<  " k= " << k <<  " k_adr= " << k_adr << endl;
    return 0;
}
输出:
 int& k_adr = k的结果:  k= 32 k_adr= 32
 k++的结果:  k= 33 k_adr= 33
 k_adr = -5的结果:  k= -5 k_adr= -5
 i = 100,k_adr += i的结果:  k= 95 k_adr= 95 
(1.2)函数形参&a &b 之后,函数中的a b与原值a b都会改变 
#include<iostream>
using namespace std;
void swap(int &a,int &b){
    int temp;
    temp = a;
    a = b;
    b = temp;
    cout << " &a &b之后a b的值:" << a <<  "  " << b << endl;
}
int main(){
    int a = 10,b = 50;
    swap(a,b);
    cout << " 原值a b的值:" << a <<  "  " << b << endl;
    return 0;
}

输出:(函数形参&a &b 之后,函数中的a b与原值a b都会改变)
 &a &b之后a b的值:50  10
 原值a b的值:50  10 


http://www.kler.cn/news/354291.html

相关文章:

  • MAC 电脑Office power point编辑的时候,显示“某些字体无法随演示文稿一起保存,仍然要保存演示文稿吗?”
  • 深入探讨B+树索引的基本概念、工作原理以及在MySQL中的应用
  • k8s系列-Rancher 上操作的k8s容器网络配置总结
  • 07 django管理系统 - 部门管理 - 搜索部门
  • 流体力学分析的利器——X-Flow软件在中国的官方代理商
  • 【可答疑】基于51单片机的智能衣柜(含仿真、代码、报告、演示视频等)
  • CSS 入门
  • SQL注入总结
  • OceanBase 从架构到实战应用的技术探索
  • centos 8.4学习小结
  • Cesium 黑夜效果
  • Maven--简略
  • Axure重要元件三——中继器函数
  • 浙大数据结构:09-排序2 Insert or Merge
  • 浅谈微前端【qiankun】的应用
  • gaussdb 主备 8 数据库安全学习
  • 深入探索 C++ STL: 高效双向链表 list 的使用与实践
  • Node.js基础(二)
  • 【设计模式-简单工厂】
  • Leetcode 71 Simply Path