黑马程序员技术交流社区
标题:
建立动态数组例题,希望对大家有帮助!
[打印本页]
作者:
斑斑1111
时间:
2016-2-28 22:16
标题:
建立动态数组例题,希望对大家有帮助!
[size=18.000000pt]先定义一个长度为1的整型数组,然后依次从键盘上输入数据,每输入一次就及时添加到数组中,实现代码如下:
[size=18.000000pt]#include <stdio.h>
[size=18.000000pt]//malloc 和 realloc 函数使用之前要先声明stdlib.h头文件
[size=18.000000pt]#include <stdlib.h>
int main(int argc, const char * argv[]) {
//定义一个int型常量,来表示数组的长度
int i = 0;
//用malloc函数定义一个动态数组(指针),长度为一个int类型的字节数
int *a = (int *)malloc((i+1)*sizeof(int));
//第一次提示用户输入数字
printf("请输入第1个整数:\n");
//接收输入的数字
scanf("%d",&a
);
//进入循环
while (1) {
//在第一次输入之后,让用户选择退出还是继续输入
printf("输入0退出,输入1继续:\n");
int fno;
scanf("%d",&fno);
if (fno == 0) {
printf("程序正在退出...\n");
break;
}else if(fno == 1){
[size=18.000000pt] //如果选择继续输入,则提示用户输入一个整数
[size=18.000000pt] printf("请输入第%d个整数:\n",i+2);
[size=18.000000pt] //数组元素增加一个,也就是长度+1
[size=18.000000pt] i++;
[size=18.000000pt] //使用realloc函数给之前定义的指针a重新分配空间,扩展到循环次数相对应的数值
[size=18.000000pt] a = (int *)realloc(a, (i+1)*sizeof(int));
[size=18.000000pt] //接收这个数
[size=18.000000pt] scanf("%d",&a
);
}
}
//定义一个int型的静态数组arr
int arr[i+1];
//把指针a中的每个元素传到数组arr中
for (int k=0; k<i+1; k++) {
arr[k] = a[k];
}
//遍历数组,进行打印
for (int j=0; j<i+1; j++) {
printf("%d\t",arr[j]);
}
printf("\n");
//输出静态数组arr的长度
printf("数组arr的长度为%lu\n",sizeof arr/sizeof(int));
//释放指针a;
[size=18.000000pt] free(a);
return 0;
}
[size=18.000000pt]此段代码仅供大家参考...新手上路,有问题请多多指教!要喷请轻喷....谢谢大家!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2