我想在我的代码中获取任何类型的变量,所以我做了一个void *类型来接受其他人。但是我可以使用char *而不是int值。而且我不明白我是如何做到的。 这是我的代码:
void insertion(t_liste *liste, void *newValue) {
t_element *new = malloc(sizeof(void *));
int i;
int *j = &i;
if (liste == NULL || new == NULL) {
exit(EXIT_FAILURE);
}
if (newValue == j || (char *)newValue) {
new->value = newValue;
new->suivant = liste->premier;
liste->premier = new;
liste->taille++;
new->index = liste->taille;
}
}
在我的主要任务中
insertion(maListe, 5);
它没有用,但如果我这样做了:
insertion(maListe, "test");
有效。 但我想要两个作品! 我的.h
typedef struct s_element t_element;
typedef struct s_liste t_liste;
struct s_element{
int index;
void *value;
t_element *suivant;
t_element *precedent;
};
struct s_liste{
t_element *premier;
t_element *dernier;
int taille;
};
有什么想法吗?
答案 0 :(得分:0)
OK!在函数
void insertion(t_liste *liste, void *newValue)
中,您正在使用void *类型的参数。在第一种情况下,当您发送字符串(char *)时,将传递字符串的基址,因此地址将被转移到newValue
,但是如果您传递一个数字,例如5,则将整数传递给{ {1}}它需要一个地址。