社区
数据结构与算法
帖子详情
指针的问题????????UP有分.
iceadf
2003-08-26 09:57:25
再链表插入的函数中为什么头节点是指针的指针类型.好像就用指针就可以呀.
大家能不能解释一下.明白后马上结帖.再止谢过.
...全文
79
13
打赏
收藏
指针的问题????????UP有分.
再链表插入的函数中为什么头节点是指针的指针类型.好像就用指针就可以呀. 大家能不能解释一下.明白后马上结帖.再止谢过.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FishCrazy
2003-08-27
打赏
举报
回复
UP ;)
FishCrazy
2003-08-27
打赏
举报
回复
我看你关键是要理解
传值还有传地址两者的定义以及它们之间的差别
wangmin_yjitx
2003-08-27
打赏
举报
回复
up
challengecxi
2003-08-27
打赏
举报
回复
对于数据结构一些问题,不妨到下面网址下载一个演示软件,挺有用的。
http://www.cnitexam.com/down/index.php?o=display;id=25
challengecxi
2003-08-27
打赏
举报
回复
*p改变以后,p的值是不变的(p是一个地址值,*p是p指针所指向的类型值)。**p是指向指针类型的指针,*p改变以后,**p的地址值不变,但其指向的类型值改变。
其实,函数调用可以用指针的引用,这样就能改变形参的值,对于你的程序第一行若改为“seqtree * & root”,函数里的语句改变root后,推出函数以后root的值就会改变,下面这个简单的例子希望能帮你理解
#include<iostream>
using namespace std;
struct node
{
int d;
node * next;
};
void insert(node * & r)
{
int ins;
cin>>ins;
node * ptr= new node;
ptr->next=0;
ptr->d=ins;
r->next=ptr;
}
int main()
{
node *p=new node;
p->d=3;
p->next=0;
insert(p);
while(p)
{
cout<<p->d<<endl;
p=p->next;
}
return 0;
}
这个函数当输入完ins以后输出应为
3
ins
wbh0360
2003-08-27
打赏
举报
回复
可以啊,不过不知道你程序怎么写的?
boodweb
2003-08-26
打赏
举报
回复
哦,那这样的话应该是seqtree **root才对阿,否则编译的时候怎么会出问题阿
用指针的指针应该是为了能够改变root吧(用*root=ins),否则root不可能改变
btw:程序里的root=ins是不是要写成*root=ins呢
iceadf
2003-08-26
打赏
举报
回复
to challengecxi(challenge):
int **p, 按你的意思,如果*p的值改变的话,那*p,p,**p.这三个值将如何改变呀。/
iceadf
2003-08-26
打赏
举报
回复
void insert(seqtree *root, int val)
{
seqtree *ins,*p=root;
ins=new seqtree;
ins->value=val;
ins->left=ins->right=NULL;
if(root==NULL)
{
root=ins;
return;
}
for(;;)
{
if(p->value<ins->value)
{
if(p->left==NULL)
{
p->left=ins;
break;
}
else p=p->left;
}
else
{
if(p->right==NULL)
{
p->right=ins;
break;
}
else p=p->right;
}
}
}
比如说上面这个排序二叉树的插入函数,其形参就一定要是指针的指针,如果换成是指针就编译出问题。
challengecxi
2003-08-26
打赏
举报
回复
我在做数据结构上机作业时就在这个问题上纠缠了好久TT
challengecxi
2003-08-26
打赏
举报
回复
指向指针(假设为ptr1)的指针类型(假设为ptr2)改变后,ptr1的值才会改变,你自己试试就知道了。
boodweb
2003-08-26
打赏
举报
回复
没看懂啊,能不能举个例子
链表还有这么一说吗?
SoftWare1999
2003-08-26
打赏
举报
回复
在不含头节点的链表中,返回第一个指针类型的地址
c++
指针
的安全
问题
delete ptr;// 避免悬挂
指针
int* ptr;// 未初始化的
指针
*ptr = 5;// 未定义行为,对野
指针
解引用i <= 10;i++) {// i = 10 时会导致缓冲区溢出// 调用函数,演示缓冲区溢出return 0;
指针
ptr 指向的是栈上分配的变量 i 的地址,而不是通过 new 关键字分配的堆内存。尝试用 delete 释放栈上的变量是不允许的,这会导致程序运行出现未定义行为。int i = 42;// 错误:试图释放一个非动态分配的
指针
。
高通camx hal进程NULL空
指针
crash
问题
分析之一:【Power up Failed导致】CamxResultECSLStreamOn导致
深入日志排查发现,根本原因是KMD层Flash驱动上电失败(PowerupFailed),导致StreamOn超时(CamxResultECSLStreamOn)。异常流程显示,Flash模块在ACQUIRE_DEV后未正确设置状态,直接进入RELEASE_DEV。解决方案是修改cam_flash_pmic_power_ops函数,增加状态检测逻辑。该
问题
反映了仅处理空
指针
表象而不分析根本原因会导致随机崩溃,需深入理解模块交互流程。
c++
指针
问题
指针
的地址和所指向的对象是紧密联系的,尤其是在使用指向常量的
指针
时,需要确保
指针
所指的对象的生命期大于等于
指针
在使用期间。4. 悬空
指针
:悬空
指针
是指不能访问到有效的内存地址的
指针
。7. 野
指针
和释放后
指针
:避免使用野
指针
和释放后的
指针
,它们都是指向无效内存的
指针
,可能导致程序崩溃或者内存错误。
指针
常量(int * const p2)表示
指针
常量,即
指针
所指向的地址不可以更改,
指针
所指向的值可以修改。常量
指针
(const int *p1)表示指向常量的
指针
,即
指针
所指向的值不可以修改,而
指针
本身可以修改。
MTK 平台CTP bring up记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MTK 平台TP bring up 记录MTK平台 CTP bring up的过程一、TP的基础原理二、bring up步骤1.找到代码目录;2.需要修改的地方一般为makefile,dts以及config遇到的
问题
: 记录MTK平台 CTP bring up的过程 本次 TP bring up的平台是基于MT6761的8766工程,TP的ic为BOE的FT3427,和 国显的GT9293。 一、TP的基础原理 1.现在主流的屏幕技术都
指针
问题
全析
指针
指针
的概念1.
指针
初了解2.星号 * 的用法:3.
指针
的分类(1)野
指针
:(2)空
指针
:(3)失效
指针
:4.
指针
的存放形式小端存放:5.类型对
指针
的作用(1)解析存储单元的大小(2)
指针
变量加1的能力6.
指针
的应用(1)传地址:(2)
指针
与单目运算符结合:(3)
指针
与数组:
指针
的概念 1.
指针
初了解 区别
指针
与
指针
变量:
指针
:地址 p;
指针
变量:存放地址的变量 int * p ; int * p ; // * 是声明,声明P是一个整型的
指针
变量 *p ; // *与P结合表指向 指
数据结构与算法
33,026
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章