我在C中制作了一个动态整数数组,这是我的代码

#include <stdio.h>

int main(){
   int count=0, i, input;
   int *myarr;
   myarr=(int*)malloc(4*sizeof(int));

   while(1){
     scanf("%d", &input);
     myarr[count]=input;
     count++;
     if (input == -1) break;
   }

   for (i=0; i<count; i++){
     printf("%d ", myarr[i]);
   }

   return 0;
}


从代码中,我以为我显然只做了4个整数的数组,即myarr [0]到myarr [3],当我插入甚至10个整数时,它仍然会打印所有整数,而不打印垃圾,我以为会在第四个整数之后...也许我不明白动态创建数组的意义??请让我直!

最佳答案

您最多只能访问myarr[0],包括myarr[3]

访问任何其他索引都是未定义的行为:它可能会起作用,但可能不会。

另外,myarr[count]==input看起来像是一个错字。您是说myarr[count] = input吗?您拥有的方式就是测试myarr[count]是否等于input。从技术上讲,由于您正在使用未初始化的数据,因此myarr的任何元素的行为都是未定义的行为。

关于c - 动态数组的打印值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26975804/

10-11 22:06