#include <stdio.h>
void ModifyArray(int *ptr1, int *ptr2, int *ptr3) {
for(int i = 0; i<4; i++) {
ptr3[i] = ptr1[i+0] - ptr2[i+3];
}
}
int main() {
int Array1[6];
int Array2[6];
int Array3[6];
ModifyArray(&Array1[0], &Array2[0], &Array3[0]);
printf("%d\n", Array2[6]);
return 0;
}
Экспериментируя с неопределенным поведением массива, я заметил, что, когда я использую функции ModifyArray(&Array1[0], &Array2[0], &Array3[0]);
и go за пределами Array2
, Array2[6]
всегда возвращает 0
. Когда я удаляю функцию, Array2[6]
, как и ожидалось, возвращает случайное число. Почему создание функции ModifyArray
приводит к переходу Array2[6]
в go от неопределенного поведения к 0
?