五行代码的疑惑

来源:互联网 发布:淘宝情趣用品图片审核 编辑:程序博客网 时间:2024/06/10 03:45
#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 } -> [讨论]五行代码的疑惑

原创粉丝点击