C 使用指针代替数组

C 使用指针代替数组,c,pointers,memory,C,Pointers,Memory,我对C游戏绝对是新手,希望能得到以下代码片段的帮助: #include <stdio.h> int main() { int cases; scanf("%d", &cases); printf("%d", cases); int i; int *heights; for(i=0; i<cases; i++){ scanf("%d", &heights[i]); } retur

我对C游戏绝对是新手,希望能得到以下代码片段的帮助:

#include <stdio.h>

int main() {
    int cases;
    scanf("%d", &cases);
    printf("%d", cases);

    int i;
    int *heights;
    for(i=0; i<cases; i++){
        scanf("%d", &heights[i]);
    }

    return 0;
}
#包括
int main(){
int案例;
scanf(“%d”和案例);
printf(“%d”,案例);
int i;
国际*高度;
对于(i=0;i用于动态分配高度的空间

int *heights = malloc(cases*sizeof(int));  
free
指针,当您完成
heights
时,通过调用
free(heights)
来完成

对于较小值的
案例
,您可以使用:


不要忘记在C99模式下编译代码(
-std=C99
)。

指针不包含任何内存。因此,首先必须根据需要使用malloc系统调用分配内存。 在您的案例中,malloc的语法-

heights=(int*)malloc(cases*sizeof(int));

有一件事要记住,在动态memeory位置之后,您必须释放它-


free(heights)

在旁注中,您(可能)没有给任何东西一个空指针。未分配变量意味着它们有一个未定义的值,因此可能是任何东西。主要问题是高度被定义为指针,而您没有(可能通过malloc())给它任何指向的东西。+1并养成习惯,对任何你
malloc()
@WhozCraig;Yes.添加的东西调用
free()
 int heights[cases];