[問題] reference的使用
開發平台(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
--
╭─────────────────╮
│ 遠くへと広がる海の色暖かく│
│ 夢の中で描いた絵のようなんだ│
│切なくて時をまきもどしてみるかい?│
│ No No No いまが最高!│
╰─────────────────╯ -僕たちはひとつの光
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.102.192
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1521121864.A.B51.html
※ 編輯: oToToT (123.193.102.192), 03/15/2018 21:54:07
→
03/15 22:13,
6年前
, 1F
03/15 22:13, 1F
→
03/15 22:15,
6年前
, 2F
03/15 22:15, 2F
→
03/15 22:38,
6年前
, 3F
03/15 22:38, 3F
→
03/15 22:54,
6年前
, 4F
03/15 22:54, 4F
→
03/15 23:35,
6年前
, 5F
03/15 23:35, 5F
推
03/16 00:04,
6年前
, 6F
03/16 00:04, 6F
→
03/16 00:05,
6年前
, 7F
03/16 00:05, 7F
→
03/16 00:05,
6年前
, 8F
03/16 00:05, 8F
→
03/16 00:07,
6年前
, 9F
03/16 00:07, 9F
推
03/16 00:07,
6年前
, 10F
03/16 00:07, 10F
→
03/16 00:07,
6年前
, 11F
03/16 00:07, 11F
→
03/16 00:07,
6年前
, 12F
03/16 00:07, 12F
→
03/16 00:20,
6年前
, 13F
03/16 00:20, 13F
→
03/16 00:20,
6年前
, 14F
03/16 00:20, 14F
推
03/16 00:34,
6年前
, 15F
03/16 00:34, 15F
→
03/16 00:49,
6年前
, 16F
03/16 00:49, 16F
→
03/16 00:50,
6年前
, 17F
03/16 00:50, 17F
→
03/16 00:50,
6年前
, 18F
03/16 00:50, 18F
→
03/16 00:50,
6年前
, 19F
03/16 00:50, 19F
推
03/16 05:12,
6年前
, 20F
03/16 05:12, 20F
→
03/16 09:27,
6年前
, 21F
03/16 09:27, 21F