加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 返回指针的开头?

发布时间:2020-12-16 10:18:33 所属栏目:百科 来源:网络整理
导读:我知道你可以拿指针,如: someFunction(const char* txt){ txt++; //Increment the pointer txt--; //Decrement the pointer} 我如何回到指针的开头? (不计算我的增量数量并减少该数量)我在想类似的事情: txt = (*txt[0]); 但这似乎不起作用(将指针指定到
我知道你可以拿指针,如:

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;

或无.你得到相同的指针.使用我描述的两种方法之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读