+ -
当前位置:首页 → 问答吧 → 很奇怪的错误问题

很奇怪的错误问题

时间:2011-11-29

来源:互联网

TCHAR ch[1024]=_T("d:\\");
  TCHAR cc = _T('\\');
  TCHAR *pCh = _tcsstr(ch, &cc);
  if (NULL == pCh)
  {
  return;
  }

 pch为空



  TCHAR ch[1024]=_T("d:\\");
  TCHAR cChar[2] = _T("\\");
  TCHAR *pCh = _tcsstr(ch, cChar);
  if (NULL == pCh)
  {
  return;
  }



pch不为空

为什么呢?

作者: guandq2106   发布时间: 2011-11-29

第一个为空,因为cc表示一个字符,又是在堆栈上,其后续很可能不是一个'\0'字符,所以会找不到,当然为空

第二个cChar为字符串,当然能找到了,所以不为空

作者: lifesider   发布时间: 2011-11-29

引用 1 楼 lifesider 的回复:
第一个为空,因为cc表示一个字符,又是在堆栈上,其后续很可能不是一个'\0'字符,所以会找不到,当然为空

第二个cChar为字符串,当然能找到了,所以不为空

cc是在栈上分配的,而不是在堆上分配的,我定义的TCHAR cc = _T('\\');只是一个字符的定义
所以后面没有‘\0’!
感谢1楼的回复!O(∩_∩)O谢谢

作者: guandq2106   发布时间: 2011-11-29