Dovrebbe diventare una cosa del genere:

codice:
#include <stdlib.h>
#include <stdio.h>

#define N 2

unsigned int* input16 (unsigned int a){
    
    unsigned int* op = (unsigned int*)malloc(sizeof(unsigned int)*N);
    
    if(op == NULL){
          exit(1);
    }
    
    unsigned int ms[N];
    int i;
    
    ms[0]=65535;
    ms[1]=4294901760;
    
    for (i=0;i<N;i++)
        op[i]=a & ms[i];
    
    op[1]=op[1]>>16;
    
    for (i=0;i<N;i++)
        printf ("%u ",op[i]);
        
    return op;
}

int main(){
    
    unsigned int* p = input16(5);
    int k;
    
    printf("\n");
    
    for(k=0;k<N;k++)
        printf("%u ",p[k]);
    delete[] p;    
    getchar();
    return 0;
}