Если я объявлю массив внутри функции main () и отправлю этот массив в функцию в качестве параметра, могу ли я добавить в этот массив элементы, которые не являются указателями, созданными с помощью malloc?
Я понимаю, чтостатические переменные, созданные внутри функции, помещаются в стек и становятся ненадежными после возврата из функции.Однако, поскольку массив инициализируется как статический массив в main (), ячейки памяти в массиве должны быть сохранены после возврата из вспомогательной функции, нет?
typedef struct test_t {
int x,y;
} test;
void fillArray(test arr[], int length) {
int i;
for (i=0; i<length; i++) {
arr[i] = (test){i,i*3}
}
return;
}
void main() {
test arr[5];
fillArray(arr, 5);
int i;
for (i=0; i<5; i++) {
printf("(%d,%d)\n", arr[i].x, arr[i].y);
}
}
Я ожидаю, что этот игрушечный пример будетвести себя правильно, потому что ничего особенного не происходит, но это технически неопределенное поведение или это безопасно?