Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160145
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 294
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-11 14:55
个人简介

努力奋斗的骚年!

文章分类

全部博文(35)

文章存档

2014年(19)

2013年(16)

分类: C/C++

2014-10-08 15:32:48

一个函数参数如果是值传递,那么传入函数体的实际上是一份实参的拷贝,实际并不作用于该实参变量。
指针也是一样的,传入函数体的是指针的一份拷贝,这份拷贝指向和原指针相同的地址,可以修改该指针指向的值,但是却不能修改该指针的值,即不能修改该指针指向的地址。如果要使用函数改变指针指向的地址,其方法是使用一个二级指针,二级指针的指向的值是一个指针,这样就可以实际作用到实际指针的指向。
单链表插入时,如果使用一级指针,要在链表的起始位置插入一个节点,函数必须修改根指针的指向,但是函数访问到的是指针的拷贝而已,不能修改根指针的指向。所以需要传入一个二级指针。
int sll_insert(Node *root, int value);        //一级
int sll_insert(Node **rootp, int value);    //二级

关于代码说明详见《c和指针》第12章
阅读(1402) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~