27 lines
646 B
C
27 lines
646 B
C
/*
|
|
找出以下程序的bug, 并修正 int main()
|
|
{
|
|
const int *a = malloc(20);
|
|
for (int i = 0; i < 20; i++)
|
|
{
|
|
*(a + i) = i;
|
|
}
|
|
printf("%d %d\n", a[0], a + 2);
|
|
}
|
|
*/
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
int main()
|
|
{
|
|
int *a = malloc(20); // 修改1: 去掉 const 修饰
|
|
for (int i = 0; i < 20; i++)
|
|
{
|
|
*(a + i) = i;
|
|
}
|
|
printf("%d %d\n", a[0], *(a + 2)); // 修改2: a+2 加上解引用 *, 以取得元素值
|
|
free(a); // 修改3: 释放手动分配的内存空间
|
|
|
|
return 0; // 修改4: 加上 return 0
|
|
} |