Hola, tu codigo es funcional, el unico detalle es que como year es una array no puedes acceder a el simplemente con year, debes necesariamente hacer referencia con un indice year[indice], tal como lo hiciste con la posicion numero [1] que en realidas el el 2do dato, el dato uno esta en la posicion [0]. Ahora te mando una modificacion (minima) del codigo que mandaste para que todo funcione a la perfeccion, al menos lo que trata de hacer tu codigo.
=================================================================
#include <stdio.h>
#include <stdlib.h>
struct fecha{
int *year;
};
void leerFecha(struct fecha *date){
(*date).year[0] = 3; //Modificado
(*date).year[1] = 4;
}
int main(){
struct fecha date;
date.year = (int*)malloc( 300*sizeof(int) );
leerFecha(&date);
printf("%dn",date.year[0]); //Modificado
printf("%dn",date.year[1]);
return 0;
}