Oli*_*ryn 1 c arrays pointers pointer-arithmetic
当我使用指针算法访问特定元素时,如何更改数组中的值?
#include <stdio.h>
int main() {
  int a[3] = {1, 1, 1}, b[3] = {2, 2, 2};
  a++ = b++; // How can I get this to work so a[1] = b[1]?
  return 0;
}
数组不是指针.重复三次; 数组不是指针.
你不能递增一个数组,它不是一个可赋值的值(即你不能改变它).你当然可以索引它以获得一个值:
a[1] = b[1];
其次,当您打算分配给数组的元素时,您当前的代码正在尝试递增,然后为数组本身分配一个新值.在需要时,数组会降级为指针,所以这也适用:
int *a_ptr = a;
int *b_ptr = b;
*++a_ptr = *++b_ptr;
// or, better...
a_ptr[1] = b_ptr[1];
这是你打算做的.我更喜欢版本1,并且通常也使用带指针的索引,因为它通常更容易阅读.