void CDlgTestDlg::OnButton1()
{
TCHAR* arr="1";
test(arr);
MessageBox(arr); //弹出1
}
void CDlgTestDlg::test(TCHAR* pChar)
{
pChar="2"; //这里修改了值
MessageBox(pChar); //弹出2,已经修改了值,它传递的是地址啊,为什么上面还是弹出1呢?
}
-----------------------------
TCHAR* arr="1";
这样定义的字符串指针是const的
--------------------------
那这样总不可能是常量了吧
void CDlgTestDlg::OnButton1()
{
char arr[10]="1";
test(arr);
MessageBox(arr); //弹出1
}
void CDlgTestDlg::test(char* pChar)
{
pChar="2"; //这里修改了值
MessageBox(pChar); //弹出2,已经修改了值,它传递的是地址啊,为什么上面还是弹出1呢?
}
结果还是一样...请高手指点
-------------------------------------
void CDlgTestDlg::test(TCHAR* pChar)
这样定义的话,你在这个函数中,如果修改pChar指向的地址的内容,那么在外部函数中也会有效;如果是修改pChar本身的地址,那么对外部来说是没有意义的。因为就这个指针的地址来说,相当于是值传递。如果希望改这个指针的地址,请用TCHAR** pChar
嗯 按值传递, 只是一个副本指针指向了"2" 而原来的还是指向"1"的
------------------------------------------------------
CSDN讨论的很热烈,有兴趣可以直接查看原贴内容:
阅读(2669) | 评论(0) | 转发(0) |