void InitStack( SqStack *&S)
来源:互联网 发布:centos web服务器 编辑:程序博客网 时间:2024/05/17 08:12
这样的表示确实是有的,我来详细介绍一下.
其中,&表示引用,而*表示指针.
我们来看一下,如果你的参数写成 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语言描述的,和编程语言是不一样的,它的目的就是为了说明算法
当然,我们理解了算法,才能更好的进行编程.
其中,&表示引用,而*表示指针.
我们来看一下,如果你的参数写成 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语言描述的,和编程语言是不一样的,它的目的就是为了说明算法
当然,我们理解了算法,才能更好的进行编程.
0 0
- void InitStack( SqStack *&S)
- SqStack
- 数据结构算法经常看到的形如"int InitStack(Stack &S)"和"int Empty(Stack S)"的解释
- void f(n,s)
- 十三 void bzero(void *s, int n);
- void *memset(void *s, int ch, unsigned n);
- void *memset(void *s,int c,size_t n)
- 顺序栈的实现SqStack
- 数据结构之顺序栈SqStack
- 顺序栈的实现(SqStack, C++版)
- void *
- void
- void
- void
- void
- void
- void*
- void
- Android 权限大全
- 小记暑假第一天
- android 调用第三方应用市场,给自身应用评分
- 课堂笔记
- C++ new malloc realloc
- void InitStack( SqStack *&S)
- 【php】在Windows2003下配置Apache2.4与php5.4
- Sublime2下配置Python模块查找路径PYTHONPATH
- SDK目录结构
- 浪潮之巅学习笔记1
- 条件变量--讲的很基础
- linux改写rm防止误删文件
- android各种组件的监听器
- 盛大锦书注册到云梯的 C# 程序