我在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/