题目要求:用户输入数字在(int)范围内,输出用户输入的数字,并输出数组长度。 注:(此处仅写核心代码,比如:那个用mallo申请空间没有判断申请失败(也就是返回值为NULL啦),嘤嘤嘤!) // malloc + 指针 实现数组扩容 输入1703时输入结束 #include<stdio.h> #include<string.h> #include<stdlib.h> char *enBigArray(){ int len = 10; // 默认初始化数组长度为10 int i=0; int num=0; int *p= (int *)malloc(len*sizeof(int)); // 创建一个长度为10的数组 int *ptemp=p; // 临时的指针指向该"新数组"; while(scanf("%d",&num),num!=1703){ if(i<len){ ptemp[i++]=num; // 如果用户输入的数字个数小于数组长度,则存到该数组 }else{ len*=2; // 如果用户输入的数字个数大于数组长度,则长度扩大为原来的2倍 p = (int *)malloc(len*sizeof(int)); // 申请新的"数组 "; for(int j=0;j<i;j++){ // 将原来的数组copy到新申请的更大的数组中 p[j]=ptemp[j]; } p[i]=num;// 将超出的第一个值存到新数组 i++; free(ptemp);// 释放原数组的空间 ptemp=p; // 临时的指针指向该"新数组"; } } for(int j=0;j<i;j++) printf("%d ",ptemp[j]); // 打印出用户输入的数字 printf("\n%d",len); // 打印数组总长度 } int main() { enBigArray(); }