在C中使用索引大于50的数组时进行内核转储

在C中使用索引大于50的数组时进行内核转储,c,arrays,pointers,C,Arrays,Pointers,我在编写带有指针的简单程序时遇到了一些问题 和阵列。目标是将128的值插入到 使用指针的数组。问题是如果我使用超过50个索引 我被人甩了。我是遗漏了什么还是环境限制? 需要malloc()还是应该在其他地方定义数组 #include <stdio.h> #include <stdarg.h> #define MAX 512 int main(void){ int i, *p, a[MAX]; i = 0; p = &a[0];

我在编写带有指针的简单程序时遇到了一些问题 和阵列。目标是将128的值插入到 使用指针的数组。问题是如果我使用超过50个索引 我被人甩了。我是遗漏了什么还是环境限制? 需要malloc()还是应该在其他地方定义数组

#include <stdio.h>
#include <stdarg.h>
#define MAX 512

int main(void){
    int  i, *p, a[MAX];
    i = 0;
    p = &a[0];
    for (i=0 ; i <= MAX; i++){
        *(p+i) = 128;
    }
    printf("First value  %d last value of pointer  %d\n", *p, *(p+(MAX-1)) );

}
#包括
#包括
#定义最大512
内部主(空){
int i,*p,a[MAX];
i=0;
p=&a[0];

因为(i=0;iChange
iChange
i
*(p+i)
with
i==MAX
对于
a[MAX]
是不允许的。另外,为什么不使用
p[i]
?阅读起来要愉快得多。你可能的意思是
我认为p是一个指针,所以方括号不起作用。
*(p+i)
i==MAX
a[MAX]
是不允许的。另外,为什么不使用
p[i]
?阅读起来更愉快。你的意思可能是
我认为p是一个指针,所以方括号不起作用。它起了很大的作用。我很好奇为什么运算符less或equal不起作用。因为
有很多问题。我在过去一个多小时里一直在努力完成这个任务。它起了很大的作用。我很好奇为什么did运算符less或equal不起作用。因为
它有很多问题。过去一个小时左右,我一直在努力处理这个任务。