下面的代码丢弃数组中的重复元素。
#include<stdio.h>
int main() {
int arr[5] = {1,2,2,3,5};
int i, j, k, size = 5;
printf("\nArray with Unique list : ");
for (i = 0; i < size; i++) {
for (j = i + 1; j < size;) {
if (arr[j] == arr[i]) {
for (k = j; k < size; k++) {
arr[k] = arr[k + 1]; //line in question
}
size--;
} else
j++;
}
}
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return (0);
}
在上面有问题的行中。当k = 4
时,arr[k] = arr[k + 1];
的右侧将超出数组边界。
我的问题是 arr[4] = arr[5];
有效吗?为什么?
添加问题:
如果无效,为什么它有效?
代码来源:http://www.c4learn.com/c-programs/to-delete-duplicate-elements-in-array.html
最佳答案
My question is that is arr[4] = arr[5]; valid? And why?
由于您指出的确切原因,它是无效的:越界数组访问。
关于c - 丢弃 C 数组中的重复元素/超出数组边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758776/