读书人

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

发布时间: 2013-08-09 15:16:24 作者: rapoo

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



#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;
}

读书人网 >C++

热点推荐