开发平台(Platform): (Ex: Win10, Linux, ...)
OSX El Capitan
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Homebrew GCC 7.2.0
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
C++ 默认 STL
问题(Question):
我想要把资料传入function后,他再依据传入的值,去执行该做的事
结束后把state改掉,这样在接下来的时候就不会走到同样的state
喂入的资料(Input):
无
预期的正确结果(Expected Output):
0
9
8
7
6
5
4
3
2
1
错误结果(Wrong Output):
0
9
0
7
6
terminated by signal SIGSEGV (Address boundary error)
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
#include <iostream>
#include <vector>
using namespace std;
vector<int> arr;
int obov(){
arr.push_back(0);
return arr.size()-1;
}
void myfunc(int& id){
if(arr.size()==10) return;
if(!id) id = obov();
myfunc(arr[id]);
cout << arr[id] << '\n';
}
int main(){
int a = obov();
myfunc(a); cout << a << '\n';
return 0;
}
( https://pastebin.com/upZsetu0 )
补充说明(Supplement):
似乎改写成
int a = arr[id];
myfunc(a); arr[id] = a;
就不会有问题了,想请各位大大帮我指出问题点QQ