The best way would be to pass the entire 2d array to function2() along with a parameter that selects the column. Then just iterate along the axis.
for (int i=0; i<16; i++) // For each column of the 2D array "a"
{
function2( a , i );
}
void function2(float b[Y][X] , size_t col )
{
for( size_t i = 0 ; i < Y ; i++ )
b[i][col] = ...
}