C++调用函数时,原实参的值被莫名其妙的改变

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:24:09
请大家帮忙看看我的小程序。该程序用数据结构的顺序表实现两任意位数的整数相加并输出结果。在调用AddList(List L1,List L2)函数时原实参的值被改变!小弟在此研究多日,实在不知问题出在何处,只好麻烦各位高手帮忙解决,先谢谢大家了!程序代码如下:
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
typedef int Elemtype;
struct List
{
int size,Maxsize;
Elemtype *list;
};
void InitList (List &L) //顺序表初始化//
{
L.size=0;
L.Maxsize=10;
L.list=new Elemtype [L.Maxsize];
}
void InputList(List &L) //将待处理的数输入并存储在顺序表里//
{
char input;
int i=0;
while((input=getchar())!='\n')
{
L.list[i]=int(input-48); //将输入的字符型变量转换成对应的整形变量//
L.size++;
i++;
if(L.size==L.Maxsize)
{
L.list=(Elemtype *)realloc(L.list,(10+L.Maxsize)*sizeof(Elemtype));
L.Maxsize+=10;
}
}
}
void RmoveList (List &L) //将顺序表中所有元素右移一位,并使首元素为0//
{
i

List AddList ( const List &L1,const List &L2)
L1是引用地址
然后La=(L1.size>=L2.size ? L1 : L2);
把地址赋给了La
La.list[i2]=k1;
又对La赋值,因为La与L1指向的是同一地址
所以当你cout<<L.list[i];进行输出的当然是改变后的值了。

ADDLIST的用法问题,在相加的过程中,是NUM1=NUM1+NUM2;估计是这样的,你在相加的过程中用别的参量代替NUM1,把NUM1的值赋予比如T,C我不太会,应该估计是这个问题