* & 的问题 (待整理)
来源:互联网 发布:初恋怪兽 知乎 编辑:程序博客网 时间:2024/05/27 20:32
资料:http://tieba.baidu.com/f?kz=1053435983
void InitStack( SqStack *&S)
浏览次数:3426次悬赏分:5 | 解决时间:2006-8-12 00:19 | 提问者:dangdangxww
为什么这个S形参前面用了* 和&呢?是怎么个用法,含义如何呀?小弟在这先谢了,那位高手帮一下?
问题补充:
这个写法是我从《数据结构上机试验》的书上抄下来的,且可以运行,但就是不知道是什么个用法!
最佳答案
这样的表示确实是有的,我来详细介绍一下.其中,&表示引用,而*表示指针.我们来看一下,如果你的参数写成 void initstack(sqstack *s)这是什么意思呢,想必都知道,就是把main()函数中的一个定义的指针赋值给指针s,这就说到了对于函数参数传递的问题,函数的参数传递分为引用和非引用那么它们的区别是什么呢?举个例子#include<iostream>using namespace std;void initstack1(int *s){ *s=8 ;}void initstack2(int &*s){ *s=8;}//这两个函数分为函数1和函数2来表示,另外sqstack是数据结构中的类C语言,在编译中是会报错的,我们换一个数据类型int main(){ int a=1,b=1; int *p1=&a,*p2=&b;//不好意思第一次搞错了 initstack1(p1); cout<<*p1; //结果是输出1 initstack2(p2); cout<<*p2; //结果是输出8}引用(加&)和非引用(不加&)为什么结果不一样呢,都是赋值的函数呀这就是函数作用域和生命期的原因不加引用是把实参复制一份给形参,形参的变化不影响实参,而非引用是直接对实参进行操作,也就是赋予了函数2异地操作数据的能力这就是输出结果不同的原因,另外这个函数是一个顺序栈,数据结构中的数据类型是用类C语言描述的,和编程语言是不一样的,它的目的就是为了说明算法当然,我们理解了算法,才能更好的进行编程.
- * & 的问题 (待整理)
- 待解决和整理的问题
- 待整理研究的技术问题
- 动规问题概述(待整理)
- typedef的用法(待整理合并)
- XPathDocument的相关用法(待整理)
- 关于NULL的定义 (待整理)
- qt4.7.4的移植(待整理)
- Liferay的检索(待整理)
- app的国际化方案(待整理)
- 待整理的网址
- 待整理的知识点
- 转载的--------待整理
- 待整理的linux
- [python]编码问题 待整理
- 生产者/消费者问题的多种Java实现方式 (待整理)
- 【知识点待整理】工作中遇到的问题难点
- 树链剖分(待整理)
- 再谈“我是怎么招聘程序员的”(上)
- VC++动态链接库(DLL)编程深入浅出(三)
- VC++动态链接库(DLL)编程深入浅出(四)
- PHP开发一个网站
- VC++动态链接库编程之非MFC DLL
- * & 的问题 (待整理)
- java简单实现webservice接口
- 求解最大子段和
- 旋转向量
- APUE 非阻塞I/O的学习
- DLL技术木马进程内幕
- 学会用 VC++ 动态链接库编写 DLL 木马
- 使用CSS设计搜索框
- 求数组中最大的k个数