作者IhateOGC (我讨厌)
看板C_and_CPP
标题[问题] Reverse String with recursively
时间Mon Mar 11 18:45:55 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
http://tinyurl.com/y4hq4vfg
问题(Question):
submit
static int 无法初始化?
喂入的资料(Input):
static volatile int i = 0 ;
预期的正确结果(Expected Output):
Stdout:
init i
i1 = 0
i2 = 0
i1 = 1
i2 = 1
i1 = 2
错误结果(Wrong Output):i
Stdout:
runtime error: reference binding to null pointer of type 'struct value_type'
(stl_vector.h) - leet code spiral
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
void reverseString(vector<char>& s) {
static int i = 0 ;
static char *p = nullptr;
if( &s[0] != p )
{
p = &s[0];
i = 0;
cout << "init i " << endl;
}
cout << "i1 = " << i << endl;
if( i >= (s.size()/2) )
return;
cout << "i2 = " << i << endl;
swap( s[i] , s[s.size()-1-i]);
i++;
reverseString(s);
}
补充说明(Supplement):
我的i怎不会跑...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.10.126.116
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1552301160.A.F50.html
※ 编辑: IhateOGC (39.10.126.116), 03/11/2019 20:38:57
已解决
void reverseString(vector<char>& s) {
static int i = 0 ;
static char *p = nullptr;
if( s.size() != 0 && (&s[0] != p) ){
p = &s[0];
i = 0;
}
if( i >= (s.size()/2) )
return;
swap( s[i] , s[s.size()-1-i]);
i++;
reverseString(s);
}
※ 编辑: IhateOGC (39.10.126.116), 03/11/2019 20:51:19
1F:推 CoNsTaR: 因为 i 不会自己重置回 0 ? 03/11 20:57
2F:→ IhateOGC: 不会...xd 03/11 21:51
3F:推 kokal: 看output是 s是NULL时,p=&s[0]发生错误 03/11 22:47