ポインタを理解してるというのは気のせいだった

void copy_test (char *pointer)
{
    char *str = "test";
    pointer = malloc(strlen(str) + 1);
    strcpy(pointer, str);
}

int main (void)
{
    char *test;
    copy_test(test);
    printf("%s\n", test);
    free(test);

    return 0;
}

なんでうまくいかないのか理解できなかった

void copy_test (char **pointer)
{
    char *str = "test";
    *pointer = malloc(strlen(str) + 1);
    strcpy(*pointer, str);
}

int main (void)
{
    char *test;
    copy_test(&test);
    printf("%s\n", test);
    free(test);

    return 0;
}

こうしなきゃいけないよね