0
我今天開始學習C++,目前有一些問題。C++返回一個自定義結構類型 - 錯誤
我有一個自定義的結構,我叫數據:
struct data{
int x, y, l;
};
它只需用3個變量結構。
接下來我運行這個遞歸函數。儘管如此,打印出最終的返回語句會得出正確的結果並不重要。
data finds(int x, int y, int length, string s){
//cout << length << endl;
int nx = prev(x, s);
int ny = next(y, s);
if(nx != -1 && ny != -1 && s.at(nx) == s.at(ny)){
finds(nx, ny, length + 2, s);
}
else{
cout << x << y << length << endl;
data vals;
vals.x = x;
vals.y = y;
vals.l = length;
return vals;
}
}
在這個函數的聲明COUT產生
068
這是我想要的數字。然而,當我嘗試打印這樣的功能的結果是這樣的:
464078426865241
這顯然是錯誤的。
我的問題變成:我如何正確地返回一個結構來產生正確的值。
而且你可能想一些運行的代碼:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct data{
int x, y, l;
};
int next(int i, string s){
//cout << s;
//cout << j;
for(int j = i + 1; j < s.size(); j++){
if(isalnum(s.at(j))){
return j;
}
}
return -1;
}
int prev(int i, string s){
//cout << s;
for(int j = i - 1; j >= 0; j--){
//cout << j;
if(isalnum(s.at(j))){
return j;
}
}
return -1;
}
data finds(int x, int y, int length, string s){
//cout << length << endl;
int nx = prev(x, s);
int ny = next(y, s);
if(nx != -1 && ny != -1 && s.at(nx) == s.at(ny)){
finds(nx, ny, length + 2, s);
}
else{
cout << x << y << length << endl;
data vals;
vals.x = x;
vals.y = y;
vals.l = length;
return vals;
}
}
int main(){
s = "1233321";
data val;
val = finds(3, 3, 2, s);
cout << val.x << val.y << val.l;
}
打開警告級別,您應該發現一些未定義的行爲。 – chris
不能編譯vs2012 – gongzhitaao