gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:46:58 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com