在给定数组 char ch[] = "hello"
的情况下,如果设定一个下标 i
,有以下区别:
-
*ch + i
表达式的含义是通过ch
指针获取数组的首个元素'h'
然后加上i
。这实际上是一个数学运算,即将字符'h'
的 ASCII 值(104)与i
相加。结果将是一个整数值。 -
*(ch + i)
表达式的含义是通过ch
指针加上i
的偏移量来访问数组中的特定元素。也就是说,ch + i
操作会将指针移动到数组的第i
个元素处,然后*(ch + i)
取得该处的元素的值。结果将是数组中第i
个元素的字符值。
例如,如果 i
的值为 2
,则可以得到以下结果:
*ch + i
:104 + 2 = 106
*(ch + i)
:'l'
总结来说,*ch + i
是先计算指针所指向的数据并与 i
相加,结果为整数值;而 *(ch + i)
是根据指针和偏移量访问数组中的特定元素,结果为该元素的值。