*(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 的主要区别在于前者是通过指针访问数组元素,而后者是先解引用指针然后进行加法运算。

posted @ 2023-12-02 14:36  刻黑  阅读(689)  评论(0)    收藏  举报