GetOutFilePath(char* filePath, bool isMain)
{
}
char* fileName=new char[256];
GetOutFilePath(fileName,isMain);
delete[]fileName;
这里指针虽然传递了,但是没有把内容返回给形参?为什么呢?
关键是你要先弄明白,指针与指针指向的内存段之间的关系,浅层赋值还是深层拷贝,作用域等问题。
指针本身作参数传递和普通变量类似,拷贝传值,在函数里对它直接赋值只是改了形参指针的指向,并不会对外部实参指针有任何改变。
你要修改形参指针原本指向的那一块内存,就不能是指针之间直接赋值,而是把其它指针指向的一块内存数据拷贝到形参指针指向的内存块去。
使用strcpy(filename,filepath);这样就可以赋值给形参了。
博客围绕指针传递后未将内容返回给形参的问题展开。指出需明白指针与指向内存段关系、浅层赋值与深层拷贝、作用域等。说明指针作参数传递类似普通变量拷贝传值,直接赋值不改变实参指针,可通过内存数据拷贝修改形参指针指向内存,如用strcpy赋值。

3万+

被折叠的 条评论
为什么被折叠?



