将堆栈传递到功能
Passing Stack to Function
,所以我正在玩堆栈,并且在主要功能中填写了一个,但是现在我想将其传递给其他功能,以便可以穿越它。我不确定将哪种数据类型放入原型中,以便它接受它。建议?这是我所拥有的:
main.cpp
#include <iostream>
using namespace std;
#include "stack.h"
void displayStack(char &stackRef);
int main()
{
Stack<char> stack;
stack.push('a');
stack.push('b');
stack.push('c');
return 0;
};
void displayStack(char starRef)
{
// Cannot Get here - Errors!
};
这是在告诉我我有太多参数,并且不符合参数列表。
这应该足够:
void displayStack(const Stack<char>& stack);
名称 DisplayStack
表示该函数仅显示堆栈,而不会以任何方式更改它。因此,该参数可以是引用const
。但是,名称中的后缀Stack
是多余的
#include <iostream>
using namespace std;
#include "stack.h"
typedef Stack< char > CharStack;
void display( CharStack const& stack )
{
// ... Display the stack
}
int main()
{
CharStack stack;
for( auto const ch : { 'a', 'b', 'c' } )
{
stack.push( ch );
}
display( stack );
}
请注意&Hellip;
-
该功能已移动
main
。那时不需要愚蠢的纯声明,更少的工作。干:不要重复自己。 -
函数定义后的不正确的半洛子已被删除。好吧,至少我认为它们不正确。无论它们是否是完全多余的。
-
main
中的多余return 0;
已被删除,因为那是默认值。但是,有些程序员更喜欢明确。
缺点,而C 11循环用G 4.7.2很好地编译时,它会导致内部编译器错误( ICE ),并带有Visual C 11.0:
[D: dev test]> cl foo.cpp foo.cppfoo.cpp(7):警告C4100:'stack':未引用的正式参数foo.cpp(16):错误C2059:语法错误:'{'foo.cpp(16):错误C2143:语法错误:丢失';'前 '}'C1XX:致命错误C1063:内部编译器错误 请在Visual C 上选择技术支持命令 帮助菜单,或打开技术支持帮助文件以获取更多信息[D: dev test]> _
哦。
做到这一点。; - )
编译器错误向Microsoft报告。
如果您不想修改函数内的堆栈内容:
void displayStack(const Stack<char> &starRef)
如果要修改函数内堆栈的内容:
void displayStack(Stack<char> &starRef)
注意:
- 所传递的变量的类型必须是您在函数原型中提到的 type 。
- 在c/c 中,默认情况下,函数的所有参数均通过copy 传递,即:参数而不是参数本身的副本将传递给函数。开销是副本。您通过Reference 通过,以避免传递变量副本的开销。
- 如果您希望传递的变量在函数中不变,则在参数上使用
const
限定符。
将您的DisplayStack函数更改为:
void displayStack(Stack<char> &stackRef)
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在功能块中使用新运算符时存在于堆或堆栈上?
- Clang(MacOS 32/64):在某些功能中禁用堆栈帧
- 虚拟功能是否不太可能导致堆栈溢出
- 警告#13212:引用需要堆栈对齐功能的EBX
- 在递归功能中,我如何跳到堆栈上的其他功能调用
- 是否可以将功能调用堆栈放在堆上
- C 链接列表堆栈POP功能崩溃
- 通过堆栈调整来thunk __ stdcall功能
- 功能参数导致堆栈溢出
- 将堆栈传递到功能
- palindrome功能(字符串,堆栈,队列)
- QtCore,QMutex 类,锁定功能 - 堆栈溢出故障
- 打印堆栈所有元素的功能
- C++强制堆栈内部展开功能
- 堆栈中的弹出和推送功能链表
- Valgrind堆栈完全错过了一个功能
- 具有推送和弹出功能的堆栈不起作用