我是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);
}
Run Code Online (Sandbox Code Playgroud)
leaf和*add_leaf的值相等,这正是我所期望的.但是我无法理解为什么在函数内部打印时,&leaf和add_leaf的值存在差异.在这里,我试图打印节点指针叶的地址.