我知道你可以拿一个指针,比如:
someFunction(const char* &txt)
{
txt++; //Increment the pointer
txt--; //Decrement the pointer
}
如何回到指针的开头? (不计算我的增量数和递减量)我在想类似的事情:
txt = &(*txt[0]);
但这似乎不起作用(将指针分配到它的起始位置)。
任何帮助将不胜感激
布雷特
最佳答案
你不能。您必须保存它的原始位置:
const char *o = txt;
// do work
txt = o;
或者使用索引:
size_t i = 0;
// instead of txt++ it's i++
// and instead of *txt it's txt[i]
i = 0;
你的尝试:
txt = &(*txt[0]);
不正确,如果你看的话。首先,它获取 txt[0]
(属于 char
类型),然后尝试使用 *
取消引用它,然后获取该地址使用 &
运算符(理论上会产生原始结果,但我不想过多考虑这是否适用于取消引用算术类型,如 char
),然后将其赋值(算术)结果指向一个指针。就像你在说:
const char *txt = 'a';
没有意义。您可能正在寻找的只是
txt = &txt[0];
乍一看,它可能看起来像是将 txt
设置为指向 txt
的第一个元素,但请记住 txt[0]
只是 *(txt + 0)
或 *txt
。而 &*txt
简化为 txt
,因此您可以有效地执行以下操作:
txt = txt;
或者什么都没有。你得到相同的指针。使用我描述的两种方法之一。
关于c++ - 返回指针的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294840/