【发布时间】:2015-02-08 07:07:01
【问题描述】:
我正在尝试在 C 中动态分配数组。这是我的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *array=(int*)malloc(5*sizeof(int));
array[7]=7;
array[8]=5;
printf("\n%d\t%d",array[7],array[8]);
}
我不明白为什么要打印 array[7] 以及为什么 array[8] 不打印。实际上在使用数组 [8] 时,程序在运行代码时停止响应。为什么会这样?当我声明了大小为 5 的数组时,程序不应该在数组 [5] 本身之后停止工作吗?
【问题讨论】:
-
您的数组仅来自
array[0] to array[4] -
如果你的数组只有 5 个元素,你为什么要搞乱第 8 和第 9 个元素?另外,不要转换
malloc()的返回值。