老师,求救,应该是出出现数组下标越界了
来源:5-1 序列容器--数组
OndOo
2021-01-08
```
int main() {
int arr[8] = { 1,2,3,4,5,6,7,8 };
int len = sizeof(arr) / sizeof(arr[0]);
for (int i = len; i> 0; --i) {
int temp = arr[len];
arr[i] = arr[i - 1];
if (i == 1) {
arr[i - 1] = temp;
}
}
for (int i = 0; i < len; ++i){
cout << arr[i] << endl;
}
}
老师,我的目的是将数组最后一个元素放到数组头端也就是arr[0]的位置,其他元素向后移一位。
我的想法是先把最后以为提取出来保存,然后将所有元素后移然后再将保存的尾端元素放置再数组头端
但是好像数组越界了,眼拙没发现,请老师指教,谢谢。
写回答
2回答
-
你获取长度len是8,arr[len]自然越界了。
这段代码你试试:
int arr[8] = { 1,2,3,4,5,6,7,8 };
int len = sizeof(arr) / sizeof(arr[0]);
int temp = arr[len-1];
for (int i = len-1; i > 0; --i) {
arr[i] = arr[i - 1];
}
arr[0] = temp;
for (int i = 0; i < len; ++i) {
cout << arr[i] << endl;
}
012021-01-09 -
OndOo
提问者
2021-01-09
好的 谢谢老师 脑子没转过来
00
相似问题