【发布时间】:2014-08-26 15:38:34
【问题描述】:
任务:我想交换指针而不引用传递函数中的指针。
问题 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,试试
std::swap然后你就不必担心所有这些了。指向指针而不是对指针的引用只会使使用swappointers笨拙。
标签: c++