我知道你可以拿指针,如:
someFunction(const char* &txt)
{
txt++; //Increment the pointer
txt--; //Decrement the pointer
}
Run Code Online (Sandbox Code Playgroud)
我如何回到指针的开头?(不计算我的增量数量并减少该数量)我在想类似的事情:
txt = &(*txt[0]);
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用(将指针指定到其起始位置).
任何帮助将不胜感激
布雷特
你不能.你必须保存它的原始位置:
const char *o = txt;
// do work
txt = o;
Run Code Online (Sandbox Code Playgroud)
或使用索引:
size_t i = 0;
// instead of txt++ it's i++
// and instead of *txt it's txt[i]
i = 0;
Run Code Online (Sandbox Code Playgroud)
你的尝试:
txt = &(*txt[0]);
Run Code Online (Sandbox Code Playgroud)
如果你看一下是不正确的.首先,它需要txt[0](它是类型char),然后尝试用它取消引用它*,然后用&运算符获取该地址(理论上产生原始结果,尽管我不想过于认真考虑这是否适用于解引用算术类型char),然后将(算术)结果分配给指针.就像你说的那样:
const char *txt = 'a';
Run Code Online (Sandbox Code Playgroud)
这没有意义.你可能正在寻找的只是简单
txt = &txt[0];
Run Code Online (Sandbox Code Playgroud)
乍一看,它可能看起来像是txt指向第一个元素txt,但请记住这txt[0]只是*(txt + 0),或者*txt.并&*txt简化为txt,所以你有效地做:
txt = txt;
Run Code Online (Sandbox Code Playgroud)
或无.你得到相同的指针.使用我描述的两种方法之一.