我正在尝试用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个值的总和。
答案 0 :(得分:6)
int *alpha[17];
创建指针数组。
如果您想要int数组,请使用int alpha[17];
由于从int到指针的隐式转换,您的分配是成功的。 (我希望你收到警告)
添加两个指针不仅非感性,而且C
也不允许。
This post涵盖了为什么在C ++中禁止添加两个指针,但是争论也适用于C.
答案 1 :(得分:0)
您已经创建了一个指针数组,但没有int
的数组。
你应该使用:
int alpha[17];