首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串数组和指针的疑惑解决方法

2012-03-16 
字符串数组和指针的疑惑问题1:return语句不能返回指向堆栈内存的指针或引用,所以下面fun1有问题,我能理解。

字符串数组和指针的疑惑
问题1:return语句不能返回指向堆栈内存的指针或引用,所以下面fun1有问题,我能理解。可是为什么换成int*就没有问题了(如fun5)?
char* fun1()
{
  char str[] = "hello";
  return str;
}

int* fun5()
{
  int arr[] = {100, 200};
  return arr;
}
调用:
  int *p = fun5();
  cout << *p << endl;
调试显示 p 的值就是 arr 的地址。

问题2:如果把fun1换成下面形式
const char* fun2()
{
  const char str[] = "hello";
  cout << sizeof(str) << endl;
  cout << strlen(str) << endl;
  return str;
}
const 类型数据存放在程序的静态存储区,为什么结果和fun1一样,外部调用依旧是个不可预测的内容。

[解决办法]
地址值返回是不会有问题的,但是指向的那块内存已经被回收了
[解决办法]
呵呵,简单,在

C/C++ code
    int *p = fun5();     cout  < < *p  < < endl;
[解决办法]
别用VC
别用VC试试看
VC好像很傻,每次都是用同一块区域,结果都看不到错误

热点排行