when you do a lot of operations whit arrays, you spent a lot of time and space in the block diagram, to put the input and output array in de the array functions.
the idea is not put the output array, if that is the same as input, see the figure.
and also applying the concep of pointer, C typical, to write some value in a array, when you put a value in to a array, the array is read, modified and finally written completly, that generate two problems,
-one, this operation spends a lot of coputacional time,
-the second one, is the overwriting all values, if your program using multiple threads, you can write diferents values of the same array, in different places, now you need to synchronize this operations to avoid the overwrite, if the operation only modify the value pointed, this function solves both problems.