char* 指针做为参数传递的注意点

    xiaoxiao2022-07-05  182

    GetOutFilePath(char* filePath, bool isMain) { } char* fileName=new char[256]; GetOutFilePath(fileName,isMain); delete[]fileName;

    这里指针虽然传递了,但是没有把内容返回给形参?为什么呢?

    关键是你要先弄明白,指针与指针指向的内存段之间的关系,浅层赋值还是深层拷贝,作用域等问题。 指针本身作参数传递和普通变量类似,拷贝传值,在函数里对它直接赋值只是改了形参指针的指向,并不会对外部实参指针有任何改变。 你要修改形参指针原本指向的那一块内存,就不能是指针之间直接赋值,而是把其它指针指向的一块内存数据拷贝到形参指针指向的内存块去。

    使用strcpy(filename,filepath);这样就可以赋值给形参了。

     

    最新回复(0)