c - C 中的数组赋值使用指针运算

标签 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,而且通常也使用指针索引,因为它通常更易于阅读。

关于c - C 中的数组赋值使用指针运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468580/

相关文章:

c - 找到二维数组中的所有组合,以在 C 中的剧院中容纳可变数量的人?

c - 使用 GTK_SIGNAL_FUNC 传递多个值

c - 尝试返回函数中局部变量的地址

c++ - C++中的动态树

c - 在哪里以及如何正确释放 malloc 指针?

c - 十进制到十六进制转换 (C) 不适用于大数

c - TurboC 所需左值错误

Java 比较三个字符串数组并使用 Binarysearch

java - 替换数组中的值

javascript - 如何从嵌套的对象数组中获取每个父级的值