上述程序不要用va_list
时间: 2024-09-29 16:05:26 浏览: 6
确实,在上述的C语言程序中,为了避免使用`va_list`,我们在创建链表的函数中假设知道每个元素的初始`passwd`值。如果我们不希望使用变长参数列表(va_list),我们可以修改`createList`函数如下:
```c
Person* createList(int n, int initialPasswd) {
Person* list = (Person*)malloc(sizeof(Person)); // 创建链表头部
list->num = 1; // 初始化第一个节点的数值为1
list->passwd = initialPasswd; // 使用指定的初始密码
list->next = NULL;
for (int i = 2; i <= n; ++i) { // 遍历剩余节点
Person* newNode = (Person*)malloc(sizeof(Person));
newNode->num = i;
newNode->passwd = initialPasswd; // 每个节点都使用相同的初始密码
newNode->next = list->next;
list->next = newNode;
}
return list;
}
```
这个版本的`createList`函数只接受两个参数:节点的数量`n`和所有节点的初始密码`initialPasswd`。这样就可以避免使用`va_list`了。