关键词搜索

源码搜索 ×
×

是谁还在返回栈指针?(人生就是这样,笑笑别人,再被别人笑笑)

发布2013-11-02浏览8603次

详情内容

      人生就是这样,笑笑别人,再被别人笑笑。之前笑过别人返回栈指针,没想到,我今天也返回了栈指针,我晕。

      别人程序是(有错误):

  1. #include <iostream>
  2. using namespace std;
  3. char * fun()
  4. {
  5. char str[] = "123";
  6. return str;
  7. }
  8. int main()
  9. {
  10. cout << fun() << endl;
  11. return 0;
  12. }

      其实,可以勉强改为:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. string fun()
  5. {
  6. char str[] = "123";
  7. return str; // 最好是: return string(str);
  8. }
  9. int main()
  10. {
  11. cout << fun() << endl;
  12. return 0;
  13. }

      我今天居然写了这样一个程序,晕乎:

  1. #include <iostream>
  2. using namespace std;
  3. void fun(char *s)
  4. {
  5. char str[] = "123";
  6. s = str; // 错误
  7. }
  8. int main()
  9. {
  10. char s[100] = {0};
  11. fun(s);
  12. cout << s << endl;
  13. return 0;
  14. }

     应该写成:

  1. #include <iostream>
  2. using namespace std;
  3. void fun(char *s, int n)
  4. {
  5. char str[] = "123";
  6. strncpy(s, str, n - 1);
  7. }
  8. int main()
  9. {
  10. char s[100] = {0};
  11. fun(s, sizeof(s));
  12. cout << s << endl;
  13. return 0;
  14. }

     哎,不能大意啊。

相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载