#include <iostream.h>
void po(char *pt){
pt+=3;
}
void main(){
char *pt,str[]="adcd";
pt=str;
po(pt);
cout<<*pt;
}
:
void po(char *pt){
pt+=3;
}
参数是一个指针,这个指针本身是一个局部变量(分配在栈上),它得到的值是外部代码传给它的一个副本值,而不是副本来源变量本身的地址。所以当它的值变化时,外界的那个指针的值是不会变化的。
通常有两种改法:
void po(char **pt){ } // C写法
或者
void po(char * &pt){} // C++写法
传递变量的地址 就可以改变变量的值 反之亦然
例如要为一个指针分配内存 就必须传递指针的地址
也就是2级指针
BOOL AllocateMemory (IN OUT LPVOID *IpBuffer,IN ULONG AllocNum)
{
*((ULONG **)IpBuffer)=(ULONG *) malloc (AllocNum * sizeof (ULONG));
......
}
邪恶八进制信息安全团队技术论坛 -> 技术讨论{ Technique Discussions } -> [讨论]五行代码的疑惑
邪恶八进制信息安全团队技术论坛 -> 技术讨论{ Technique Discussions } -> [讨论]五行代码的疑惑