I am wondering how to reassign a parameter. More specifically, in test() I want to reassign p. It is currently a dead variable.
#include <stdio.h>
#define NULL 0
struct PayloadPtr {
    int prime;
    struct PayloadPtr *next;
};
typedef struct PayloadPtr *Payload;
Payload new_payload(int prime, Payload next) {
    Payload p = (Payload) malloc(sizeof(struct PayloadPtr));
    p->prime = prime;
    p->next = next;
    return p;
}
void test(Payload p, int n) {
    if (p->prime * (n / p->prime) == n) {
    } else if (p->next == NULL) {
        printf("%d\n", n);
        // HERE! p is a dead variable, how to re-assign the argument?
        p = new_payload(n, p);
    } else {
        test(p->next, n);
    }
}
int main() {
    Payload p = new_payload(2, NULL);
    printf("%d\n", 2);
    int i;
    for (i = 2; i < 11; i++) {
        test(p, i);
    }
    return 0;
}
 
     
    