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

指针参数为空,函数中声明的字符串在函数退出时消失吗?解决思路

2012-02-23 
指针参数为空,函数中声明的字符串在函数退出时消失吗?void f(char **t){t hello world }{...char *p

指针参数为空,函数中声明的字符串在函数退出时消失吗?
void f(char **t)
{
  t = "hello world" ;
}

{
...
char *p = NULL ;
f(p);
...
}

在调用f(p)的时候,p为空指针,看到很多代码在f函数内部判断如果P为空,则退出,但从编译角度,没有问题,运行也通过。为什么需要p不为NULL呢?

另外,函数f中,p指向"hello ,world",是否函数退出时,p指向的内存快"hello,world"内存块消失?



[解决办法]
你这样写,虽然运行上没有问题,但实际是有隐患的!看下面的代码:

C/C++ code
#include <iostream>using namespace std;int main(){    char *ptr;    ptr = "hello world!";    cout << ptr << endl;    return 0;}
[解决办法]
没有分配内存的时候就写
可能会导致内存的某部分数据被修改
如果被修改的地方的数据很重要
那结果。。。。。

[解决办法]
引用楼主 KamiSang 的帖子:
在调用f(p)的时候,p为空指针,看到很多代码在f函数内部判断如果P为空,则退出,但从编译角度,没有问题,运行也通过。为什么需要p不为NULL呢?

另外,函数f中,p指向"hello ,world",是否函数退出时,p指向的内存快"hello,world"内存块消失?

热点排行