今天用指針調用函數,發現了一些問題,查找以後發現是對const和指針理解不到位導致的。
如果我們定義一個常量和一個指針:
<span style="font-size:14px;"><span style="font-size:14px;">int a=3;
const int *p=&a;</span>
</span>
那麼通過指針是不能修改a的值,但是直接修改a的值是可以的。
在MFC中我們經常見到LPCSTR這個類型,看一下它的定義:
<span style="font-size:14px;"><span style="font-size:14px;">typedef __nullterminated CONST CHAR *LPCSTR, *PCSTR;</span></span>
原來是一個常量指針,所以不能通過LPCSTR類型的指針,修改它的值。
今天犯的錯誤就是定義了一個
<span style="font-size:14px;"><span style="font-size:14px;">void GetData(LPCSTR pStr,LPCSTR pData);
CString str;
GetData("ddd",str);</span></span>
通過以上的函數調用是不能修改pData的值。