关于C++和JAVA中函数参数传值的问题
函数声明voidxxxx(char&A[],char&B[],int&num,char&a[],int&n)函数调用xxxx(A,B,num,a,n);错误<Unknow...
函数声明 void xxxx(char &A[],char &B[],int &num,char &a[],int &n)
函数调用 xxxx(A,B,num,a,n);
错误 <Unknown>' : arrays of references are illegal
--------------------------------------------------------------------------------------------
上面函数参数里的A[ ],B[ ], num,我调用完函数后还要 使用,
所以加了&,但是事实表明我对此 完全没理解,所以请教高手,
求解决这个C++难题,
急求,急急急!!
--------------------------------------------------------------------------------------------
如果从java角度再说一下就更好了,,谢谢!!! 展开
函数调用 xxxx(A,B,num,a,n);
错误 <Unknown>' : arrays of references are illegal
--------------------------------------------------------------------------------------------
上面函数参数里的A[ ],B[ ], num,我调用完函数后还要 使用,
所以加了&,但是事实表明我对此 完全没理解,所以请教高手,
求解决这个C++难题,
急求,急急急!!
--------------------------------------------------------------------------------------------
如果从java角度再说一下就更好了,,谢谢!!! 展开
展开全部
c++中传给数组的引用应该是类似这样用char (&A) [100]. 传递引用就是函数内的改变直接作用在所传参数上.如果给A赋值,A就真的变了;
注意[]操作符优先级比&高,所以要char (&A) [100],而非char &A [100];
另外因为是引用所有会检查数组实参和形参的大小是否一致,这里中括号内提供大小是应该的,如果不想这样做,尽量用指针吧
Java里的就是char[] A即可,因为是非基本类型,所以传递的实际上是指针的值,两个指针指向同一堆内的数组,改变的数组元素会反映出来,但是如果A直接在里面被赋值是没效果的,因为被赋值改变的是指针的副本.这就是Java中所谓的引用与c++中真正的引用的区别
注意[]操作符优先级比&高,所以要char (&A) [100],而非char &A [100];
另外因为是引用所有会检查数组实参和形参的大小是否一致,这里中括号内提供大小是应该的,如果不想这样做,尽量用指针吧
Java里的就是char[] A即可,因为是非基本类型,所以传递的实际上是指针的值,两个指针指向同一堆内的数组,改变的数组元素会反映出来,但是如果A直接在里面被赋值是没效果的,因为被赋值改变的是指针的副本.这就是Java中所谓的引用与c++中真正的引用的区别
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询