(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函数blog

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

 是能够交换成功的,可是实际上注意:::!!!!内存

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

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

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

  

而加了const 以后的指针,如const int* 表明指针指向的值不能修改,所以只能改变局部指针变量的值(指向新地址),可是主函数(调用函数)的变量值没变,仍是指向原地址(固然原地址的有const修饰,更加不可能改变)class

相关文章
相关标签/搜索