我在用指针写一个简单的程序时遇到了一些麻烦 和数组。目标是将 128 的值插入到 512 个索引中 使用指针的数组。问题是如果我使用超过 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)) );
}
最佳答案
更改 i<=MAX
至 i < MAX
.您的数组是 MAX
= 512个元素长,第一个元素是a[0]
, 第二个是 a[1]
, 第 500 个是 a[499]
.没有 a[512]
.
关于在 C 中使用索引大于 50 的数组时进行核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617761/