• C++ vs Java 参数传递


    1.形参:定义函数时候,函数名括号中变量名,不调用时候并不占有内存中存储单元,叫虚拟参数;实参与形参转变属于

    值传递过程(只能由实参传递给形参们,不能从形参传递给实参),实参与形参互相独立

    实参:主函数调用子函数中,函数名后面括号中参数

    2.C++提供一种内嵌函数(子函数内嵌主函数中) 用inline修饰,不能用switch语句

    3. 函数重载:由于有不同数据类型进行处理,重载为不同数据类型挑选出合适函数;同一个函数名定义多个函数,函数形参实参数据类型不同

    因此为了避免程序发生臃肿,采用Template形式。类似于Java 中 AnyType类型


    java 中参数传递:值传递和引用传递: 形参的值都是通过对实参值进行拷贝过来的,在引用传递过程都是对实参地址进行拷贝在传递给形参。

    特别是在引用传递过程中:引用数据类型 数组,类,接口;基本数据类型是值传递,引用数据类型是引用传递(地址传递)

    String 字符串数据具有final特性。

    你自己有一把钥匙,别人拿着你这把钥匙进行复制新钥匙 ,拿着新钥匙进入家里进行折腾,所有一般引用传递过程中发现在 子函数中值修改主函数变化--非string类型变量。

    • 但是java中String 值在被创建之后不能被修改的;对String对象str做任何修改时候等同于 重建一个新的对象 新的地址指向形参中值,与实参Str不在同一个地址。
    • 主函数中str地址中值没有发生变化,输出还是AAA;

     


    C++中值传递:值传递,引用传递f(&a ,&b)和指针传递f(*a,*b):参考,指针性函数:指针指向该形参函数的地址

     1 // test.cpp : Defines the entry point for the console application.
     2 //
     3 
     4 #include "stdafx.h"
     5 #include <iostream>
     6 
     7 using namespace std;
     8 
     9 //值传递
    10 void swap1(int p,int q)
    11 {
    12     int temp;
    13     temp=p;
    14     p=q;
    15     q=temp;
    16 }
    17 
    18 //指针传递,函数体内只有指针值的变化
    19 void swap2(int *p,int *q)
    20 {
    21     int temp;
    22     temp=*p;
    23     *p=*q;
    24     *q=temp;
    25 }
    26 
    27 //指针传递,函数体内只有指针的变化
    28 void swap3(int *p,int *q)
    29 {
    30     int *temp;
    31     temp=p;
    32     p=q;
    33     q=temp;
    34 }
    35 
    36 //引用传递
    37 void swap4(int &p,int &q)
    38 {
    39     int temp;
    40     temp=p;
    41     p=q;
    42     q=temp;
    43 }
    44 
    45 int main()
    46 { 
    47     int a=1,b=2;
    48     swap1(a,b);
    49     //swap2(&a,&b);
    50     //swap3(&a,&b);
    51     //swap4(a,b);
    52     cout<<a<<"  "<<b<<endl;
    53     return 0;
    54 }
    • 值传递:

    •  指针传递:swap2函数指针中的发生了交换,swap3指针修改,地址值没有发生变化;传
    • 注意swap2函数完成了值得交互,在swap3函数并没有进行值得修改:因为在形参中修改的是  p指针指向b地址 q指针指向a地址,修改p和q指针指向位置,没有修改a地址中的值,,但是在主函数中a指针指向a地址,b指针指向b地址,swap2中是p指向的地址中的值(就是a)与q指向的地址中的值(b)交换,所以swap2执行完后a和b的值是交换了的P指向a地址。

     引用传递:C++中引用传递,对形参操作等于实参操作,传递就是地址,不是副本

  • 相关阅读:
    defer与async的区别
    Promise 的含义
    SCSS 与 Sass 异同
    CSS总结2
    CSS总结1
    jQuery-插件,优化
    jQuery-表格以及表单
    jQuery-事件以及动画
    jQuery-ajax
    jQuery-DOM操作
  • 原文地址:https://www.cnblogs.com/woainifanfan/p/6478930.html
Copyright © 2020-2023  润新知