关于变长数组的一点小想法-C语言定义数组但是数组长度不确定怎么办
很多数据机构,比如栈,链表等,都可以动态分配存储空间
那么数组呢?一般声明时都要指定数组长度,那么数组可以实现动态分配么?
假设数组存的是int型
那么 你先申请10个元素
int* a = (int*)malloc(sizeof(int)*10);
如果又来了个元素,那么你就可以
a=(int *)realloc(a,11*sizeof(int));
求元素个数int i,n=1;
for(i = 0;(a+i)!=NULL;i++)
{
;
}
n=i+1;//n就是元素个数
代码验证~~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include "stdafx.h" #include<stdio.h> #include<malloc.h> #define n 6//这个n只是为了模拟变长,n可以是其他函数的返回值或者用户输入的数据 int main( int argc, char * argv[]){ int m; int *a,*b,*a_same,*b_same; //----------初始化------------- printf ( "输入数组a的个数:\n" ); scanf ( "%d" ,&m); a=( int *) malloc (m* sizeof ( int )); //动态分配数组 printf ( "输入数组a的值:\n" ); for ( int i=0;i<n;i++) //这个n只是为了模拟变长,n可以是其他函数的返回值或者用户输入的数据 { if (i<m) { scanf ( "%d" ,a+i); } if (i>=m) { a=( int *) realloc (a,(i+1)* sizeof ( int )); scanf ( "%d" ,a+i); } } printf ( "%d" ,a[5]); return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步