看这个:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
void func(char * *dst) //void func(char *dst)
{
*dst=new char [100]; //dst=new char[100];
strcpy(*dst,"wahahaha");//strcpy(dst,"wahahaha");
}
int _tmain(int argc, _TCHAR* argv[])
{
char *s=NULL;
func(&s); //func(s);
cout<<s<<endl;
getch();
return 0;
}
注释里面的内容是错误的代码. 指针本身也是一个变量,只是编译器知道他是保存了一个 什么类型 的地址.
所以,在 func(s); 的时候 ,func里面的 dst也是0, 接下来 进行new 的时候,dst的内容改变了,但是main中的s却没有改变.
这个错误很白痴的...不过上次去面试的时候我糊涂了....