我尝试编译这个简单的程序,它会分配一个dyamic数组,并在每个位置返回5的倍数。但是它不起作用,它在指针中报告错误。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
int n;
int i;
int* ptra;
scanf("%d", &n);
ptra = malloc(n*(sizeof(int)));
for(i=0; i<=n; i++){
ptra[i] = (5*(i+1));
printf("%d\n", ptra[i]);
}
return 0;
}
答案 0 :(得分:3)
ptra
的索引范围必须从0
到n-1
(包括两者)。但是在这里:
for(i=0;i<=n;i++){
你出界了,undefined behaviour。将其更改为:
for(i = 0; i < n; i++) {
注意:请务必检查所有失败的标准函数的返回值(代码中为scanf()
和malloc()
)。
答案 1 :(得分:0)
您的for循环超出了限制:必须与 i<n
一样长,而不是 i<=n
尝试做:
for(i=0; i<n; i++){