我在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打印垃圾,因为我认为它会在第四个整数之后...也许我没有理解动态创建数组的意义?请让我直截了当!
答案 0 :(得分:0)
您应该只能访问myarr[0]
,包括myarr[3]
。
访问任何其他索引是未定义的行为:它可能有用,可能不行。
此外,myarr[count]==input
看起来像是一个错字。你是说myarr[count] = input
吗?您拥有它的方式是测试myarr[count]
是否等于 input
。从技术上讲,你拥有它的方式是 myarr
的任何元素的未定义行为,因为你正在使用未初始化的数据。