[英]why am I getting '1' as last element of the array at index arr[2] after shifting the elements
為什么在移動元素后我在索引 arr[2] 處得到“1”作為最后一個輸出
#include <iostream>
using namespace std;
void shifting(int* arr)
{
int i, j;
for (i = 0; i < 3; i++)
{
arr[i] = arr[i + 1];
}
for (i = 0; i < 3; i++)
{
cout << arr[i] << endl;
}
}
int main()
{
int array[n] = { 5, 2, 3 };
shifting(array); //shifting the elements to left side
return 0;
}
輸出:2 3 1
你轉移的方式是錯誤的。 正確的方法是將值存儲在臨時元素中,然后移位。
例如。
temp=arr[0]
for (i = 0; i < 3; i++)
{
arr[i] = arr[i + 1];
}
在這里添加 arr[2]=temp
這在 C++ 中被稱為未定義行為,您移動的方式是將數組索引到邊界之外,這意味着您正在嘗試訪問數組中不存在的元素。
這取決於您希望最后一個值是什么。 如果希望數組輸出 2、3、5:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.