五行代码的疑惑

博客围绕C/C++代码中指针参数传递展开。指出指针作为局部变量,其值变化不影响外界指针。介绍了两种修改方法,即C写法的二级指针和C++写法的引用。还举例说明为指针分配内存需传递指针地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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 } -> [讨论]五行代码的疑惑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值