out [i] =*(a_mat + i)在C中做了什么?

use*_*466 2 c

while( i < a_rows * a_cols ) {
    out[i] = *(a_mat + i);  // this line
    i++;
}
Run Code Online (Sandbox Code Playgroud)

标记线有什么作用?

小智 12

它获得了指向的任何值a_mat + i.它本来可以写成a_mat[i].

  • 不,`a_mat [i]`和`*(a_mat + i)`在所有情况下都是等价的,因为这是索引运算符的定义方式. (10认同)
  • @Matthew Scharley将1添加到int*类型的指针将增加4个字节的指针,而不是仅增加1个字节.所以*(a_mat + i)完全等同于a_mat [i]. (4认同)
  • @Ben:...至少在`sizeof(int)== 4`的平台上. (2认同)
  • ......好吧,现在也许我知道为什么我遇到了麻烦C. (2认同)