当我使用指针运算访问特定元素时,如何更改数组中的值?
#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,而且通常也使用指针索引,因为它通常更易于阅读。
关于c - C 中的数组赋值使用指针运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468580/