alles klar es geht auch so das problem war einfach in der methoden def.
unzwar muss malloc als erstes in der methode stehen weil sonst er versucht auf die variabln zuzugreifen die noch nicht da sind vielen dank hier ihr seid echt fit
#include<stdio.h>
#include<malloc.h>
typedef struct stud{
char vorname[20];
char name[20];
int matnr;
float note[3];
} STUDENT;

typedef struct tabelle{
int max;
int anzahl;
STUDENT *tab;
}TAB;

return 0;
}
void init_tap(TAB *pt,int max){
pt = (TAB *)malloc(max*sizeof(TAB));
pt->max = max;
pt->anzahl = 0;
}
int main(){
TAB *t3;

init_tap(t3,5);
}
so klapps auch denke der einfachste weg