鱼C论坛

 找回密码
 立即注册
查看: 2053|回复: 2

[已解决]数据结构新手 请教一下 用C描述 链表时指针的问题

[复制链接]
发表于 2019-9-24 10:33:05 | 显示全部楼层 |阅读模式

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

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

x
rt
在描述链式线性表 时 比如 获取元素操作  Status GetElem(LinkList L, int i,Elemtype e) 这里LinkList L的L是不带*号的 但在插入操作Status InsertElem(LinkList *L, int i,Elemtype *e)中 L 和 e都是带星号的。
请问是为什么? 在C语言中 指针是指向数组头元素的,为什么有时候要加* 有时候不用呢
最佳答案
2019-9-24 21:01:18
我的理解是这样子的,首先在函数的形式参数中用*表示传入的是一个地址这样子就可以改变实参的值,那么为什么我们传地址就可以改变实参的值?是因为编译器在函数体中用*的时候就会找对应地址的元素比如*e=2;由于实参在定义的时候就分配了地址,所以他的地址就是不变的。固可以用这个方式在函数体中改变实参的值。
至于你说的在函数声明中用的*就是为了保证他能够改变这个地址指向实际参数的值。如果你只是访问一个元素,那么我们就不用改变他实际的值,所以就不用*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-24 10:37:49 | 显示全部楼层
再比如 返回元素的指 有的时候用
*e=p->data
还有用
e=p->data
为什么可以用一个指针去接收data的值呢···············
·
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-24 21:01:18 | 显示全部楼层    本楼为最佳答案   
我的理解是这样子的,首先在函数的形式参数中用*表示传入的是一个地址这样子就可以改变实参的值,那么为什么我们传地址就可以改变实参的值?是因为编译器在函数体中用*的时候就会找对应地址的元素比如*e=2;由于实参在定义的时候就分配了地址,所以他的地址就是不变的。固可以用这个方式在函数体中改变实参的值。
至于你说的在函数声明中用的*就是为了保证他能够改变这个地址指向实际参数的值。如果你只是访问一个元素,那么我们就不用改变他实际的值,所以就不用*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 16:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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