鱼C论坛

 找回密码
 立即注册
查看: 801|回复: 3

[已解决]单链表

[复制链接]
发表于 2021-8-22 10:39:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在单链表中,头插法,需要修改头指针的指向,将头指针传入函数中,为什么函数的参数要双层解引用(void add  **...)?
最佳答案
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**。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-22 10:59:58 | 显示全部楼层
改变变量的值,传变量的地址
改变指针的指向,传指针的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-22 12:32:37 | 显示全部楼层
函数内不能改变实参的值 但可以通过解引用改变指向的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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**。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 18:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表