数据结构的一些疑难杂症!

1.void union (List &La,List Lb)  //链表的合并

用& 符号意味着La 是所谓的引用性变量,
只有这样才能让La 的变化能返回主程序。
一个更典型的例子是两个变量的值交换.

void swap(int &x , i nt (y){ int z=x; x=y;
y=z;return;}, 可以试试, 如果去掉&符号会发生什么,)   //合并链表La,Lb

2.*PA=a;     表示把a的值赋值给PA所指的内存地址,PA本身没变。

PB=&a;    表示指针PB指向变量a的地址,PB本身变了。*PA=a;     表示把a的值赋值给PA所指的内存地址,PA本身没变。

*p是一个值,p是一个地址   *是取值的意思,&是取地址符号。

 linklist p=Lnode * p;p是一个指针,两者作用都是定义了一个指向结构体的指针

3. delete p;
就会在堆上分配一块内存,当作int类型使用,并赋值为1,将其地址储存在栈上的int*类型的p里。delete p会释放p所指向的内存。而这里p为一自动变量,其本身在程序退出其作用域时销毁。
用delete命令处理某个指针,说是把那个指针删除了是不正确的。

delete命令指示释放了那个指针原本所指的那部分内存而已。被delete后的指针p的值(地址值)并非就是NULL,而是随机值。

也就是被delete后,如果不再加上一句p=NULL,p就成了“野指针”,在内存里乱指一通。

如果在定义p的那个函数在delete了p后,没再调用p,就没什么问题,在这个函数结束后,p就会跟其它变量一样被消除。但若在那个函数里delete了p后,又没再给p赋值(地址值),再次调用p就危险了,因为这时p在内存里乱指,有可能指到一些重要地址,随时可能系统崩溃。

//p=NULL是个好习惯
    //就像你蹲完厕所要洗手一样

4.引用型参数

1.需要改变实参的值,比如swap()。参数是引用时,函数接收的是实参的左值而不是值的拷贝。这意味着函数知道实参在内存中的位置,因而能够改变它的值或取它的地址。
2.向主调函数返回额外的结果。

3.向函数传递大型的类对象

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值