打印动态数组的值

时间:2014-11-17 15:16:29

标签: c arrays

我在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个整数,它仍然会打印所有这些,它没有&#39 ; t打印垃圾,因为我认为它会在第四个整数之后...也许我没有理解动态创建数组的意义?请让我直截了当!

1 个答案:

答案 0 :(得分:0)

您应该只能访问myarr[0],包括myarr[3]

访问任何其他索引是未定义的行为:它可能有用,可能不行。

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