繁体   English   中英

对指针C ++的困惑

[英]Confusion about Pointers C++

任务:我想交换没有引用的指针传递函数中的指针。

问题1:以下代码完成了这项工作,但我认为它交换“数据”而不是交换“指针”。

void swappointers(char *ptrX, char *ptrY)
{
   char dummy;
   dummy = *ptrX;
   *ptrX = *ptrY;    //LINE
   *ptrY = dummy;
}

问题2:注释行如何工作? * ptrX表示正在取消引用ptrX(访问指针指向的值)。 类似于* ptrY的情况。 但是为什么ptrX指导的价值在这里被改变了? 我的意思是它实际上看起来像这样:

ValueofX = ValueofY

谢谢 :)

编辑:

解决了第一个问题。

void swappointers(char **ptrX, char **ptrY)
{
   char *dummy = nullptr;
   dummy = *ptrX;
   *ptrX = *ptrY;
   *ptrY = dummy;
}

我认为它交换“数据”而不是交换“指针”。

你是对的。

我想在没有引用的情况下交换指针传递函数中的指针。

这不可能。 除非您通过引用传递,否则调用者将看不到函数内部所做的更改。

  1.  template<typename T> void swap(T &a, T &b){ T backup=a; a=b; b=backup; } 
  2. *ptrX = *ptrY; 表示变量, ptrX指向的点必须与点ptrY变量具有相同的值。

关于您的评论说明:

*ptrX = *ptrY;    //LINE

用简单的英语表示:

将ptrY指向的内存位置的值放入ptrX指向的内存位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM