【问题标题】:What is the role of -s in this code, where s is a char pointer?-s 在这段代码中的作用是什么,其中 s 是一个 char 指针?
【发布时间】:2021-03-28 07:55:24
【问题描述】:

在这段代码中

strcpy(s, "bacalaureat");
i = strchr(s, 'a') - s; // i = 1

i的值是1。为什么会这样,上面-s的作用是什么?

【问题讨论】:

  • strchr 返回一个指向找到位置的指针,因此从中减去字符串开头的指针,就可以得到找到位置的索引。事实上,bacalaureat 中的第一个 a 位于位置 1。(b 位于位置 0)。
  • 基本上就是std::find(s.begin(), s.end(), 'a');
  • 在 SO 上使用标签“指针算术”。

标签: c++ c string character pointer-arithmetic


【解决方案1】:

来自reference

char *strchr( const char *str, int ch );

str指向的空终止字节字符串中查找ch ...的第一次出现

所以strchr(s, 'a') 将返回一个指针,指向第一次出现的字符a,这是s 中的第二个字符。

从此结果中减去s 只是指针运算,它为您提供s 中字符a 的索引,即1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2010-12-14
    相关资源
    最近更新 更多