社区
软件水平考试
帖子详情
关于指向指针的指针的问题!
hzfxjun
2003-09-28 10:44:21
我在书上看到
void lq_ins2(NODE **head,int x)
{
......下面为函数内容,略
}
因为本函数有可能要更改链表的首指针,所以函数中关于链表头指针的参数应为链表头指针的指针。
这是为什么,为什么一定要是指向指针的指针?
像void lq_ins2(NODE *head,int x)这样用指针,不行吗?
...全文
49
10
打赏
收藏
关于指向指针的指针的问题!
我在书上看到 void lq_ins2(NODE **head,int x) { ......下面为函数内容,略 } 因为本函数有可能要更改链表的首指针,所以函数中关于链表头指针的参数应为链表头指针的指针。 这是为什么,为什么一定要是指向指针的指针? 像void lq_ins2(NODE *head,int x)这样用指针,不行吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ZouMorn
2003-09-30
打赏
举报
回复
楼主兄弟:
假设你有一个链表,头指针是h; (NODE* h;)
调用
void lq_ins2(NODE* head, int x)
lq_ins2(h, t);
函数给链表头添加一个节点,你原来的 h 还能用吗,h 现在是指向第二个节点了?
如果用下面的函数
void lq_ins2(NODE** pHead, int x)
{
//函数内部使用 h 后,并且改变 h 的值
NODE* h = new NODE;//
h->Next = *pHead;
*pHead = h;
}
调用后,h仍然是头指针,该方法可以用cpp中的引用实现。
你懂不懂我在说什么?
duxianghe
2003-09-29
打赏
举报
回复
如果要改变内容:
调用时用:lq_ins2(NODE &head,int x) //此时head为指针
gujianliang
2003-09-29
打赏
举报
回复
如果是指针变量就可以改变。但如果是指针常量呢?(我上面的离子就是要说明如果是数组的情况,那就得用指针的指针了。)
hzfxjun
2003-09-29
打赏
举报
回复
但是用void lq_ins2(NODE *head,int x)
也能改头指针的地址呀!
ZouMorn
2003-09-29
打赏
举报
回复
这个的意思主要是
将头指针传入,并且可能被该函数修改,例如在头上添加一个节点什么的。
如果是 c 语言,只有这样,但是如果是 c++ 还可以:
F(NODE*& p, )
这样调用:
NODE* h;
F(h, );
caiyi0903
2003-09-29
打赏
举报
回复
楼主还是没能理解函数的指针调用这个概念!!
gujianliang
2003-09-29
打赏
举报
回复
接上贴
如果就一个指针,那就只有数组了,虽然数组名也是地址,但它是地址常量,不能变的。
所以只有靠&argv(65486可以被重新赋值)了。
gujianliang
2003-09-29
打赏
举报
回复
一般NODE是在前用define过的,通常有操作数组的,
这让我想起main(int argc,char **argv),其中就是:
&argv: argv:
65486 ------->argv[0],argv[1],argv[2],argv[3],null
(地址)
argv 本身就是数组名,就是指针,那它的地址就是&argv了,操作就灵活了,是不是这样?
duxianghe
2003-09-28
打赏
举报
回复
如果调用时用:lq_ins2(NODE head,int x) //此时head为指针
那么:
lq_ins2(NODE *head,int x)
{……………
}
如果调用时用:lq_ins2(NODE *head,int x) //此时head也为指针,*head就不用说了
那么:
lq_ins2(NODE **head,int x)
{……………
}
wythust
2003-09-28
打赏
举报
回复
我想是不是可以这样理解:
(1),如果用*head做函数参数,执行时假设实参为*H,由于*H与*head指向同一内存单元,改变*head的值(即改变这一内存单元的值)时,也就改变了*H的值,但如果要让*head指向另一内存单元,*H的值就不能跟着变了(即不能正确返回头指针)
(2),如果用二级指针就不一样了,**head就是*(*head),*head是**head指向的内容,由(1)可知,改变*(*head)指向的内容,即改变*head,是可以返回给实参的。
让你不再害怕
指针
指针
声明符号(*)去掉,剩下的部分就是
指针
所
指向
的类型。我们继续分析例一中的
指针
: (1)int*ptr; //
指针
所
指向
的类型是 int (2)char*ptr; //
指针
所
指向
的类型是 char (3)int**ptr; //
指针
所
指向
的类型是 int* (4...
C/C++
指针
的13份资料
5. **多级
指针
**:可以声明
指向
指针
的
指针
,如`int **pp;`,这种多级
指针
常用于动态内存分配和函数参数传递。 6. **数组与
指针
**:在C/C++中,数组名实际上就是一个
指向
数组首元素的
指针
,如`int arr[5]; int *p = ...
C/C++
指针
经典资料大全
- C++11引入了智能
指针
(如`unique_ptr`,`shared_ptr`,`weak_ptr`),自动管理内存,避免手动释放带来的
问题
。 8. **
指针
与STL** - 标准模板库(STL)中的容器如`vector`,`list`,`map`等,经常与
指针
结合使用...
指向
指针
的
指针
C
指向
指针
的
指针
指向
指针
的
指针
是一种多级间接寻址的形式,或者说是一个
指针
链。通常,一个
指针
包含一个变量的地址。当我们定义一个
指向
指针
的
指针
时,第一个
指针
包含了第二个
指针
的地址,第二个
指针
指向
包含实际值...
C语言
指针
数组和
指向
指针
的
指针
组的所有元素都必须是具有相同存储类型和
指向
相同数据类型的
指针
变量。
指针
数组说明的一般形式为:类型说明符 *数组名[数组长度] 其中类型说明符为
指针
值所
指向
的变量的类型
指针
数组类型表示的是多个
指针
(一组有...
软件水平考试
2,959
社区成员
22,569
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章