社区
软件水平考试
帖子详情
关于指向指针的指针的问题!
hzfxjun
2003-09-28 10:44:21
我在书上看到
void lq_ins2(NODE **head,int x)
{
......下面为函数内容,略
}
因为本函数有可能要更改链表的首指针,所以函数中关于链表头指针的参数应为链表头指针的指针。
这是为什么,为什么一定要是指向指针的指针?
像void lq_ins2(NODE *head,int x)这样用指针,不行吗?
...全文
44
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`等,经常与
指针
结合使用...
指向
指针
的
指针
(int **p)
指向
指针
的
指针
是一种多级间接寻址的形式,或者说是一个
指针
链。通常,一个
指针
包含一个变量的地址。当我们定义一个
指向
指针
的
指针
时,第一个
指针
包含了第二个
指针
的地址,第二个
指针
指向
包含实际值的位置。 一个...
C_
指向
指针
的
指针
C_
指向
指针
的
指针
怎样定义一个
指向
指针
数据的
指针
变量呢? 形式可以如: char **p; p的前面有两个*号。*运算符的结合性是从右到左,因此**p相当于,显然 *p是
指针
变量的定义形式。如果没有最前面的*,那就是...
软件水平考试
2,959
社区成员
22,569
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章