为什么数组元素在循环内外具有不同的值
Why the array elements are having different values inside and outside the loop?
在做一些代码时,由于循环内外数组值的自变化,我没有预期的结果。
char* arr[2];
int i=0;
char inp[20];
while(i<2)
{
cin>>inp;
arr[i]=inp;
cout<<arr[i]<<endl;
i++;
}
cout<<arr[0]<<endl;
cout<<arr[1]<<endl;
对于输入:
aaa
bbb
输出为:
aaa
bbb
bbb
bbb
以下行不会按照您的想法执行:
arr[i]=inp;
在这里,您分配arr[i]
指向inp
的指针,而不是将inp
ut缓冲区复制到arr[i]
中。在同一迭代中(即在第一个cout << arr[i]
),一切都很好。一旦您覆盖了 inp
的内容,更改将反映在您分配给同一指针arr
的所有单元格中。实际上,在循环结束时,arr
的所有单元格都指向inp
,这意味着您将始终看到从cin
中提取的最后一个值。
作为解决方案,arr
一个"字符串"数组,并使用strncpy
复制输入缓冲区:
char arr[2][20];
int i=0;
char inp[20];
while(i<2)
{
cin>>inp;
strncpy(arr[i], inp, 20);
cout<<arr[i]<<endl;
i++;
}
cout<<arr[0]<<endl;
cout<<arr[1]<<endl;
或者尽可能使用C++ std::string
。
相关文章:
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 为什么使用数组元素查找最大数字的程序不起作用?
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 使用指针访问数组元素时出现意外结果
- 试图为命名数组元素创建一个更好的循环
- C++如何使用指针来循环移位数组元素
- 使用 while / do-while 循环进行数组元素设置
- 使用 c while 循环遍历所有整数数组元素
- 循环以从根本上更改数组元素的 3x3 网格
- 为什么数组元素在循环内外具有不同的值
- 数组元素在for循环中产生不同的值
- 基于范围的for循环错误地输出了具有cout的数组元素
- 循环遍历数组并找到最接近键的数组元素的最佳方法是什么