老师,求救,应该是出出现数组下标越界了

来源: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回答

quickzhao

2021-01-08

你获取长度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;

}


0
1
OndOo
好的 谢谢老师 脑子没转过来
2021-01-09
共1条回复

OndOo

提问者

2021-01-09

好的 谢谢老师 脑子没转过来

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程