一只咸鱼123 发表于 2021-8-22 10:39:42

单链表

在单链表中,头插法,需要修改头指针的指向,将头指针传入函数中,为什么函数的参数要双层解引用(void add**...)?

Max472 发表于 2021-8-22 10:59:58

改变变量的值,传变量的地址
改变指针的指向,传指针的地址

万千只cnm 发表于 2021-8-22 12:32:37

函数内不能改变实参的值 但可以通过解引用改变指向的值

jhanker 发表于 2021-8-22 12:37:37

本帖最后由 jhanker 于 2021-8-22 14:57 编辑

楼上说的很对,C语言 ,C++ 函数的参数本质是“拷贝复制”变量的内容(值)。具体的说就是形参(函数内的参数变量)和实参(传入的参数变量)是独立的两个变量存在,在内存中是在不同的空间(有不同的地址)。现在你的问题就是实参是指针变量,你要通过函数修改其内容,那么如果函数的形参也是对应的指针变量,那你是没办法修改实参的内容的,例如设实参指针变量为 int* ADD (设ADD的内存地址是 00003FA0 (变量的地址),他的值也就是它指向的地址是00001AB0(变量的内容)),设函数的形参定义为 int* add(可以和实参一样大写,为了区分,现为小写)(设add的内存地址是 00005E10 (形参变量的地址),他的值也是00001AB0(形参变量的内容,函数的值传递,相当于复制了 ADD的值)),在这种情况下你在函数中只能修改add的内容而无法修改ADD的内容(因为函数不知道ADD的地址00003FA0,也就是函数想改变ADD内容,但找不到她在哪里)。所以这时候只能把ADD的地址00003FA0传给函数,因为ADD是指针变量 ,而指针变量的地址只能赋值给int**。
页: [1]
查看完整版本: 单链表