博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

帅得不敢出门

热爱c++ 博客文章多为转载(帖子后面有带原文链接的)以做收藏 若有误处 望多多赐教
   stupidpig.cublog.cn
关于作者  
姓名:帅得不敢出门
职业:学生
年龄:23
位置:福州
C++群:24372952  3503799
个性介绍:交朋会友

我的分类  




有关指针变量传递的问题(CSDN精华)
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讨论的很热烈,有兴趣可以直接查看原贴内容:
 

 原文地址 http://topic.csdn.net/u/20080529/16/d408b4ce-32f5-486a-af22-5e40f592696a.html?seed=1561026626
 发表于: 2008-05-30,修改于: 2008-05-30 18:49 已浏览249次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.0186

京ICP证041476号