广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何浅析C++函数参数与Java传递比较
  • 183
分享到

如何浅析C++函数参数与Java传递比较

2023-06-17 17:06:48 183人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关如何浅析c++函数参数与Java传递比较,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。对于C++函数参数与Java传递比较的问题,相信这是许多技术人员

本篇文章给大家分享的是有关如何浅析c++函数参数与Java传递比较,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

对于C++函数参数与Java传递比较的问题,相信这是许多技术人员和一些开发人员的头疼的一块心病。

先说Java,先做几点说明:

在Java中,无非就是两种类型,即基本类型和从Object继承下来的对象类型,而对象类型又包括String这种一旦初始化就不可改变内容的类型和BufferString这种可以初始化后可以改变内容的类型。然后看一下代码示例:

public class Test {   public static void main(String args[]) {    Integer interger1, interger2;    int i, j;    interger1 = new Integer(10);    interger2 = new Integer(50);    i = 5;    j = 9;    System.out.println("Before Swap, Interger1 is " + interger1);    System.out.println("Before Swap, Interger2 is " + interger2);    swap(interger1, interger2);    System.out.println("After Swap Interger1 is " + interger1);    System.out.println("After Swap Interger2 is " + interger2);    System.out.println("Before Swap i is " + i);    System.out.println("Before Swap j is " + j);    swap(i, j);    System.out.println("After Swap i is " + i);    System.out.println("After Swap j is " + j);     StringBuffer sb = new StringBuffer("I am StringBuffer");    System.out.println("Before change, sb is <" + sb + ">");    change(sb);    System.out.println("After change sb is <" + sb + ">");   }    public static void swap(Integer ia, Integer ib) {    Integer temp = ia;    ia = ib;    ib = temp;   }

这很好解释,对于基本类型诸如int,传递进去的是存放int值的“内存单元”的一个copy,所以函数swap里面的int和外面的int根本就不是一个东西,当然不能反射出去影响外面

的int。而对于对象类型,我们同样可以这样认为,C++函数参数传递进去的是存放对象类型的指针的“内存单元”一个copy(虽然Java里面没有指针的概念,但这并不妨碍我们理解)。这样,在swap函数里面,对其指针本身的值做任何操作当然不会影响外面的Integer,因为interger1和interger2的“内存单元”里面的值是不变的,其指向的对象类型也是没有变的。

然后这里需要说明一个问题,就是StringBuffer这种类型的对象了。因为其内容是可以改变的,所以change函数里面的“指针”通过类似“*”的操作,改变了StringBuffer对象的本身,就显而易见了。(StringBuffer对象本身只有一个副本)然后说C++了,里面的基本类型的诸如int的值传递大家都了然于胸,就不在这里废话了。

然后另一种值传递可以称为指针引用传递(pass-by-value argument of pointer)(这个类似上文说的Java中的对象类型的值传递),可以通过*操作,改变指针指向的值。示例程序如下,一看便知:

#include<iOStream.h>  int main(){   void test(int*, const char*);   int i = 1;   int* iptr = &i;   cout<<"Before pass-by-value:"<<"\n\n";   cout<<"i = "<<i<<", It's value of i"<<endl;   cout<<"&i = "<<&i<<", It's address of i and value of iptr"<<endl;   cout<<"*iptr = "<<*iptr<<", It's value of i"<<endl;   cout<<"iptr = "<<iptr<<", It's value of iptr and address of i"<<endl;   cout<<"&iptr = "<<&iptr<<", It's address of iptr-self"<<"\n\n";      test(iptr, "pass-by-iptr");    test(&i, "pass-by-&i");    return 0;  }

这里的引用(reference)说的明白一些,就是C++函数参数被传递参数的一个别名,或者更直接的理解就是被传递参数自己了,只是名字不同而已。那么既然自己都被pass过去了,那当然可以在function里面为所欲为了。

以上就是如何浅析C++函数参数与Java传递比较,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网其他教程频道。

--结束END--

本文标题: 如何浅析C++函数参数与Java传递比较

本文链接: https://www.lsjlt.com/news/291059.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何浅析C++函数参数与Java传递比较
    本篇文章给大家分享的是有关如何浅析C++函数参数与Java传递比较,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。对于C++函数参数与Java传递比较的问题,相信这是许多技术人员...
    99+
    2023-06-17
  • C语言函数返回值与参数传递实例分析
    本篇内容介绍了“C语言函数返回值与参数传递实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:参数传...
    99+
    2022-10-19
  • C++中beginthreadex()如何向线程函数传递参数
    在C++中,可以使用lambda函数来传递参数给beginthreadex()函数。 下面是一个示例代码: #include #i...
    99+
    2023-10-23
    C++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作