В C выражения массива «затухают» для указателя на первый элемент - когда вы вызываете
performTask(arr2);
, вы передаете адрес первого элемента arr2
к функции, а не к ее содержимому. arr1
не является копией из arr2
, это является arr2
.
Это только true для выражений массива.
В теле performTask
вам нужно выделить второй массив того же типа и размера:
void performTask( int arr[], size_t size )
{
int *arr1 = malloc( sizeof *arr * size );
memcpy( arr1, arr, size );
// work with arr1 as normal
free( arr1 );
}