一个关于指向指针的指针问题

nuaacj8888 2008-04-28 03:03:23

void ChangeSourceData(int* pSrc)
{
for(int i =0; i < 100; ++i)
pSrc[i] = i;
}

void ChangeSourcePoint(int** ppSrc)
{
int* pInt = (int*)(malloc(sizeof(int)));
(*pSrc) = pInt; // attention: "pSrc = &pInt" is wrong,you can have a deep thinking about the reason!
}

在网上看到这么一个例子,还能帮我解释下"attention"部分?
...全文
136 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuaacj8888 2008-04-29
  • 打赏
  • 举报
回复
复习了 谢谢
wengchaohui 2008-04-28
  • 打赏
  • 举报
回复
void ChangeSourceData(int* pSrc)
这里的psrc只是一个临时变量,又是局部变量,他的存在只是在运行ChangeSourceData时存在,且该变量的作用于只能在ChangeSourceData函数体内,,
现在你看:
void ChangeSourcePoint(int** ppSrc)
{
int* pInt = (int*)(malloc(sizeof(int)));
(*pSrc) = pInt; // attention: "pSrc = &pInt" is wrong,you can have a deep thinking about the reason!
}

pSrc是在ChangeSourcePoint体内,不再ChangeSourceData,这只是其中一个错误之一,,
xiaoc10 2008-04-28
  • 打赏
  • 举报
回复
(*ppSrc) = pInt; 不能写成ppSrc = &pInt。
ppSrc只是一个零时变量,若按照后一种写法,改变的是ppSrc这个零时变量的值,也就是说你在这个函数中所做的一切修改,都不会改变你调用函数ChangeSourcePoint(int** ppSrc)时,ppSrc指向的那个指针的值。
baihacker 2008-04-28
  • 打赏
  • 举报
回复
pSrc = &pInt;//只是将临时变量ppSrc的值改了,而需要改变的是ppSrc指向的那个指针的值.
babyvox1999 2008-04-28
  • 打赏
  • 举报
回复
形参传进来是复制过的。。所以修改他不会修改原来的

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧