&(str[i]) 和 (&str)[i] 有什么区别?

问题描述 投票:0回答:1

我有这种情况,

str
是一个经典字符串
const char *
,我想传递一个子字符串。但是当我查看运算符优先级表时,我想 - 也许这根本不重要。

一个是(据我理解)由 i 从 str 偏移的 char 的地址,

另一种是指针算术,将指向 str 的指针偏移 i 个指针。

有什么区别,哪一种在速度方面更可取?

c
1个回答
0
投票
  1. char *str = "hello world"
  • &str[i]
    - 具有类型
    char *
    并引用字符串文字 `"hello world"
     的第 
    i
  • 元素
  • &str
    具有类型
    char **
    (指向 char 指针的指针),并且 (&str)[1] 将引用下一个 pointer 到位于 str 本身后面的 char
  1. char str[12] = "hello world"
  • &str[i]
    - 具有类型
    char *
    并引用数组 str
     的第 
    i
  • 个元素
  • &str
    的类型为
    char (*)[12]
    (指向 12 个
    char
    数组的指针),并且 (&str)[1] 将引用 12 个 char 元素的下一个
    array
© www.soinside.com 2019 - 2024. All rights reserved.