#include<stdio.h> int main() { int arr[10] = { 0 }; int i = 0; int* p = arr; for (i = 0; i <= 10; i++) { *p = i; //i=10时越界 } return 0; } 怎么改
时间: 2024-01-14 14:04:44 浏览: 138
一些简单的c语言小程序.zip
这段代码的问题是在循环中访问了数组 `arr` 的越界元素,导致程序出现未定义行为。为了解决这个问题,可以将循环条件改为 `i < 10`,即可避免访问越界元素。同时,可以在循环中使用指针 `p` 来遍历数组元素,代码如下:
```
#include<stdio.h>
int main() {
int arr[10] = { 0 };
int i = 0;
int* p = arr;
for (i = 0; i < 10; i++) {
*(p + i) = i; // 使用指针p遍历数组元素,并赋值
}
return 0;
}
```
这样,就可以避免访问越界元素,同时也能正确地给数组 `arr` 赋值。
阅读全文