C 使用指针代替数组
我对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
#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];