*(p+i) 和 *p+i的区别
*(p+i)
和 *p+i
都是 C/C++ 中的指针运算,但它们的作用是不同的。
*(p+i)
是通过指针 p
访问其指向的数组中的第 i
个元素。这种情况下,p
必须是指向数组的指针,而 i
是数组索引。
例如,如果 p
指向一个包含 10 个整数的数组,那么 *(p+3)
将会访问数组中的第四个元素(因为在 C/C++ 中,数组索引是从 0 开始的)。
另一方面,*p+i
是先解引用指针 p
,然后加上 i
。这通常没有意义,除非 p
指向一个整数,并且 i
是一个偏移量。然而,通常更常见的是使用 p[i]
来代替 *(p+i)
。
例如,如果 p
是一个指向整数的指针,并且 i
是一个整数,那么 *p+i
将会先解引用 p
得到一个整数,然后加上 i
。然而,更常见的写法是 p[i]
,这将直接访问 p
所指向的数组中的第 i
个元素。
总的来说,*(p+i)
和 *p+i
的主要区别在于前者是通过指针访问数组元素,而后者是先解引用指针然后进行加法运算。