【发布时间】:2020-06-18 09:24:03
【问题描述】:
我想知道如何重新分配参数。更具体地说,在test() 中,我想重新分配p。它目前是一个死变量。
#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;
}
【问题讨论】:
-
您已经用
p = new_payload(n, p);重新分配了它,但新值未使用。你的意思是如何将新值传回给调用者?
标签: c