鱼C论坛

 找回密码
 立即注册
查看: 2377|回复: 9

[已解决]关于函数参数与指针的关系咨询

[复制链接]
发表于 2018-6-26 21:37:15 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lee_studying 于 2018-6-29 22:27 编辑

用c语言实现一个单链表的初始化函数
代码很简单如下:
typedef struct Node
{
        ElemType data;
        struct Node * next;
}Node;
typedef struct Node * LinkList;

Status InitList(LinkList *L)
{
        (*L) = (LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */
        if(!(*L))// 分配存储失败
        {
                return Error;
        }
        (*L) -> next = NULL; // 空链表
        return OK;
} 在主函数里有 int i;LinkList L;i = InitList(&L);实现链表的初始化。问题来了,如果在定义初始化链表函数时,参数为(LinkList L) 而不是( LinkList *L),相应的实现语句为i = InitList(L),程序运行时就会报错process return -1073749018这种错误,难道说定义初始化函数时,参数只能为(LinkList *L)吗?这里应该设计到c语言的指针与地址的关系,请懂的同学讲解一下,谢谢
最佳答案
2018-6-30 10:23:08
你如果只是传递一级指针过去,那么对指针指向地址的修改只在函数内部起作用,因为这里指针相当于一个参数,我们在函数内修改它指向地址的值的作用带到函数外,但是修改它指向何处则不行,所以必须要传递二级指针过去,修改二级指针指向地址内部的值就相当于修改一级指针指向的地址的值,这种影响才会带到函数外边!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-26 21:57:39 From FishC Mobile | 显示全部楼层

回帖奖励 +1 鱼币

此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2018-6-26 22:17:17 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2018-6-28 22:37:07 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2018-6-28 22:39:35 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2018-6-28 22:40:57 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2018-6-28 23:40:26 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2018-6-29 22:28:15 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2018-6-30 10:23:08 | 显示全部楼层    本楼为最佳答案   
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2018-6-30 16:28:55 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 16:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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