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

用一星指针接受一星数据,也会改变其中数据啊

2013-08-09 
用一星指针接受一星数据,也能改变其中数据啊???????#include stdafx.hchar* fun(char* p)//用一星指针接

用一星指针接受一星数据,也能改变其中数据啊???????



#include "stdafx.h"char* fun(char* p)  //用一星指针接受一星数据,也能改变其中数据啊???????

*(p + 3) = 'd'; 
return p;
}
int _tmain(int argc, _TCHAR* argv[])

char* pchar = new char[256];
for(int i =0 ;i<256;i++) 
     pchar[i] = 'a'; 
printf("%s\n",fun(pchar)); 
printf("%s\n",pchar); //数据被改变!!!!!!!!!!!!
 return 0;
}

[解决办法]
引用:
如果在函数中改变指针本身,那么外面还是不变的。 
//能举个例子不????

Quote: 引用:

当然可以。是对指针指向的内存操作。
如果在函数中改变指针本身,那么外面还是不变的。


用个经典的犯错的例子
#include <iostream>
using namespace std;

void func(char* p)
{
p = new char[10];
strcpy(p, "test");
cout << "in func: " << p << endl;
}

int main()
{
char* a;
func(a);
    cout << a << endl;  //执行到这句就出错了
return 0;
}

热点排行