我对C语言和指针不是很熟悉。以下是我尝试编写的一些代码。
struct node{
struct node * next;
struct node * prev;
int num;
};
void func(struct node * leaf , struct node ** add_leaf){
printf("function starts");
printf("&leaf = %p add_leaf = %p\n" , &leaf , add_leaf);
printf("leaf = %p *add_leaf = %p\n" , leaf , *add_leaf);
printf("function over");
return
}
void main(){
struct node * leaf = (struct node*)malloc(sizeof(struct node));
printf("leaf = %p\t&leaf = %p\n" , leaf , &leaf);
func(leaf , &leaf);
}
leaf和*add_leaf的值相等,这正是我所期望的。然而,当在函数内部打印它们的值时,我无法理解为什么&leaf和add_leaf的值不同。在这里,我试图打印节点指针leaf的地址。