このふたつは動きますが内容が変化しません なぜですか

f(strdata x){
delete x.start; x.start = new char [20];
strcpy(x.start,"++++"); }


main(){
char *ch=NULL;

strdata x;
x.start=ch;
f(x);
printf("%s",ch);}



f(strdata *x){
delete x->start; x->start = new char [20];
strcpy(x->start,"++++"); }


main(){
char *ch=NULL;

strdata x;
x.start=ch;
f(&x);
printf("%s",ch);}