c++ - 返回指针的开头?

标签 c++ pointers

我知道你可以拿一个指针,比如:

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/

相关文章:

c++ - 类成员在构造函数中和构造函数外的不同值

c++ - 使用指针时的注意事项

c - 代码运行时输出错误链接列表问题?

c - 如何获取基栈指针的地址

perl - "fuse"不同指针指向的位置有什么好方法?

c++ - 在 OpenCV 中使用失真系数和 findHomography

c++ - 处理导致性能问题的双端队列 block 大小

c++ - QList::iterator 只返回 (error)0

c++ - C/C++ 中指针分配的性能比较

c++ - reinterpret_casting 一个指针类型的整数和返回是否产生相同的值?