>>424
変数testの用途が不明だったので、削除させてもらった。

#include <stdio.h>
#include <stdlib.h>
typedef struct {
    char *st;
}strdata;

void f(strdata *q) {
    char *ch = (char *)malloc(10);
    ch[0] = 'X';
    ch[1] = 'Y';
    ch[2] = 'Z';
    ch[3] = '\0'; //まあ0のままでもいいんだけど
    q->st = ch;
}

int main() {
    strdata str;
    f(&str);
    printf("%s", str.st);
    getchar();
    free(str.st);
    return 0;
}