在C中更正指针算术

时间:2014-10-29 04:45:46

标签: 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;
}

为什么printf之后的行无效,导致崩溃,前一行完美运行?我试图让第9个值等于第6个和第13个值的总和。

2 个答案:

答案 0 :(得分:6)

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

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

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

添加两个指针不仅非感性,而且C也不允许。 This post涵盖了为什么在C ++中禁止添加两个指针,但是争论也适用于C.

答案 1 :(得分:0)

您已经创建了一个指针数组,但没有int的数组。 你应该使用:

int alpha[17];