我有这种情况,
str
是一个经典字符串const char *
,我想传递一个子字符串。但是当我查看运算符优先级表时,我想 - 也许这根本不重要。
一个是(据我理解)由 i 从 str 偏移的 char 的地址,
另一种是指针算术,将指向 str 的指针偏移 i 个指针。
有什么区别,哪一种在速度方面更可取?
char *str = "hello world"
&str[i]
- 具有类型 char *
并引用字符串文字 `"hello world"的第
i
&str
具有类型 char **
(指向 char 指针的指针),并且 (&str)[1] 将引用下一个 pointer 到位于 str 本身后面的 char char str[12] = "hello world"
&str[i]
- 具有类型 char *
并引用数组 str的第
i
&str
的类型为 char (*)[12]
(指向 12 个 char
数组的指针),并且 (&str)[1] 将引用 12 个 char
元素的下一个 array