[英]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;
}
我认为它交换“数据”而不是交换“指针”。
你是对的。
我想在没有引用的情况下交换指针传递函数中的指针。
这不可能。 除非您通过引用传递,否则调用者将看不到函数内部所做的更改。
template<typename T> void swap(T &a, T &b){ T backup=a; a=b; b=backup; }
*ptrX = *ptrY;
表示变量, ptrX
指向的点必须与点ptrY
变量具有相同的值。
关于您的评论说明:
*ptrX = *ptrY; //LINE
用简单的英语表示:
将ptrY指向的内存位置的值放入ptrX指向的内存位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.