在C中更正指针算术

Ken*_*hin 1 c c++ pointers pointer-arithmetic

我试图在C中学习指针操作,我不知道代码的一部分是如何工作的.

#include <stdio.h>

int main() {
  int *alpha[17];

  *(alpha+4)= 35;
  *(alpha+5)= 35;
  *(alpha+12)= 50;

  printf("%d", *(alpha+4));
  *(alpha+8)=*(alpha+5) + *(alpha+12);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当前一行printf完美运行时,为什么线路不工作,导致崩溃?我试图让第9个值等于第6个和第13个值的总和.

Gya*_*ain 6

int *alpha[17]; 创建指针数组.

如果你想要int数组,请使用 int alpha[17];

由于从int到指针的隐式转换,您的分配是成功的.(我希望你收到警告)

添加两个指针不仅是非感性的,而且也是不允许的C. 这篇文章介绍了为什么在C++中禁止添加两个指针,但是争论也适用于C语言.