(const)指针作为参数的详细说明

今天封装自己的类型的转换的时候发现,const int* 的返回值一直是空,即实际未生效

int  StrToConCh(const string strsource,const char* outCh)
{
	outCh = strsource.c_str();
	return 1;
}

  

const char* tempSource = NULL;
int ret  = otypeConversion.StrToConCh(strsource,tempSource);

改成这样跟代码的时候,发现进入被调函数时值是改变的

想想看swap函数

void Swap(int * pia, int * pib)
{
int temp(*pia);
*pia = *pib;
*pib = *temp;
}

 是可以交换成功的,但是实际上注意:::!!!!

进入被调pia和pib也是局部变量,只是解引用之后局部临时变量的值和主函数变量里值一样,指向同一块内存,实现了对那块内存的修改

而如果是直接改变指针的值,实际上只是改变了局部变量的值,主函数的指针变量指向的地址值不变,因此以下的修改不能实现交换

void Swap(int * pia, int * pib)
{
int temp(pia);
pia = pib;
pib = temp;
}

  

而加了const 之后的指针,如const int* 代表指针指向的值不能修改,因此只能改变局部指针变量的值(指向新地址),但是主函数(调用函数)的变量值没变,还是指向原地址(当然原地址的有const修饰,更加不可能改变)

转载于:https://www.cnblogs.com/effortscodepanda/p/6838517.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值