添加2个整型指针数组时产生垃圾整型
garbage integer when adding 2 integer pointer array
我刚刚开始学习如何使用指针数组,我正在尝试的例子,以了解更多关于他们,但我很容易混淆。因此,我尝试使用指针数组做一个简单的算术计算。
用户将输入2个字符串变量进行相加。然后将字符串变量反转。
string reverseString(string s1)
{
int i = 0;
int j;
char temp;
j = s1.length() - 1;
while (i < j)
{
temp = s1[i];
s1[i] = s1[j];
s1[j] = temp;
i++;
j--;
}
return s1;
}
我试图将2个字符串变量转换成一个整数指针数组,然后将它们加在一起
void stringtoInt(string& s1, string& s2)
{
int size1 = s1.size();
int size2 = s2.size();
intPtr intArray;
intPtr intArray2;
intArray = new int[size1];
intArray2 = new int[size2];
for (int i = 0; i < size1; i++)
{
intArray[i] = s1[i] - '0';
}
for (int i = 0; i < size2; i++)
{
intArray2[i] = s1[i] - '0';
}
addInteger(intArray, intArray2);
}
我在一个函数中传递了2个整数数组,并试图进行一些加法计算
void addInteger(intPtr intArray, intPtr intArray2)
{
int *p = intArray;
int *q = intArray2;
intPtr total = new int[MAX];
int i = 0;
int sum = 0;
int carried = 0;
while (*p != ' ' || *q != ' ')
{
*(total + i) = *p + *q + carried;
if(*(total + i) > 9)
{
*(total + i) %= 10;
carried = 1;
}
else
carried = 0;
i++;
p++;
q++;
}
printArray(total, i);
}
这就是我读取指针数组
的方式void printArray(intPtr total, int size)
{
for(int i = 0; i < size; i++)
cout << *(total + i);
}
在尝试调试这个指针整型数组后,我仍然不知道他们出了什么问题,我刚刚开始学习如何使用指针整型数组
问题是如何从字符串中使用字符串终止符并将它们放入整数数组中。
字符串终止符为' '
,等于0。这意味着当你做' ' - '0'
的结果是(用ASCII编码)0 - 48
。我猜这不是你期望的值。
这意味着在您的addInteger
函数中,您检查整数数组中的' '
字符,您可能会越界。这会导致未定义行为。
或者,如果在任何整数数组中有一个实际的零,您将立即停止。
无论哪种方法,你都会得到错误的结果。
不能使用字符串结束符作为整数数组的结束符。你需要使用字符串的实际大小并检查。或者,像我在注释中提到的那样,使用适当的c++容器和迭代器(或索引)。
Replace:
j = s1.length();
:
j = s1.length()-1;
字符串的最后一个字符是length-1
,而不是length
。
同样,在stringtoInt
中,您不会将终止符' '复制到intArray1
和intArray2
中,因此此条件:
while (*p != ' ' || *q != ' ')
在addInteger
中是错误的。将stringtoInt
的大小传递给addInteger
,并用该大小的for
循环替换while
循环。
相关文章:
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- 如何将SHA1转换为无符号长整型数组[5]
- 我需要以相反的方式复制一个长整型数组,我需要系统函数,例如 memcpy 有没有
- 复制存储在空指针的整型数组到整型数组
- 如何使用SSE来处理整型数组,使用条件
- 序列化/反序列化整型数组为char数组
- c++将整型数组赋值给大小相同的空整型数组
- 按值传递时改变整型数组的大小
- c++排序(升序,降序)整型数组
- 将字符串转换为整型数组
- 将二进制文件读入整型数组
- 在整型数组的最后一个元素中存储数据的问题
- 读取文件并将其作为整型数组输入
- 稍后在{}中添加无符号整型数组
- 用户输入存储在整型数组中的值c++
- 当使用整型数组的一部分时
- 将整型数组传递给c++ DLL
- 将字符数组转换为整型数组
- 引用整型数组的指针
- 比较浮点数组和整型数组