今天封裝本身的類型的轉換的時候發現,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