Bind a function with its own argument to show something dynamically after every content

If I understand well, you want to append to every post a meta value taken from another post, but the latter need to be dynamic, so not hardcoded in the function.

In OP you say the post id is “user-defined”. What does it exactly mean? If it is stored somewhere or it is given as query var the simplest solution is moving the code that retrieve the selected post id inside the function:

function get_my_content( $content ) {
  // assuming post id is saved as option
  $my_post_id = get_option( 'selected_post' ); 
  $my_post = get_post( $my_post_id );
  $my_content = get_post_meta( $my_content->ID, 'wp_c_field', true );  
  return $content . $my_content;     
}
add_filter( 'the_content', 'get_my_content' );

or

function get_my_content( $content ) {
  // assuming post id is passed as query var: example.com?thepost=xxx
  $my_post_id = filter_input( INPUT_GET, 'thepost', FILTER_SANITIZE_NUMBER_INT );
  $my_post = get_post( $my_post_id );
  $my_content = get_post_meta( $my_content->ID, 'wp_c_field', true );  
  return $content . $my_content;     
}
add_filter( 'the_content', 'get_my_content' );

There are different ways an user can choose a post id, not knowing exactly how do you select the post I can’t be more specific, but take into account the generic suggestion to move the retrieval of post id inside the callback.

If you, for any reason, can’t edit the callback to move the post id retrieval inside it, but you have the selected id saved in a variable, a solution can be use a PHP 5.3+ closure and use statement:

// your original function
function get_my_content( $id ) {
    $my_content = get_post( $id );
    return get_post_meta( $my_content->ID, 'wp_c_field', true );       
}

$selected_id = 1817; // user-selected id, stored in a variable

add_filter( 'the_content', function( $content ) use( $selected_id ) {
  return $content . get_my_content( $selected_id );
} );