今天用指针调用函数,发现了一些问题,查找以后发现是对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的值。