/*可变长数组的实现*/
#include
#include
int main(void)
{
char buf[256];
int size;
int *v;
int i;
printf("input array size>");
fgets(buf,256,stdin);
sscanf(buf,"%d",&size);
v=(int *)malloc(sizeof(int)*size);
for(i=0;i<size;i++)
v[i]=i;
for(i=0;i<size;i++)
printf("v[%d]..%d\n",i,v[i]);
return 0;
/*各位前辈你们好:
1、fgets()函数是文件操作函数,为什么也可以对数组用?
2、fgets(buf,256,stdin);和sscanf(buf,"%d",&size);这两句是什么意思
3、嘿嘿,我一点变长数组的核心我都还没有理解到
请各位前辈不吝赐教!!*/
}
这些代码算不上什么变长数组,仅仅是让你输入一个数组大小,然后动态分配内存(malloc)
fgets从控制台stdin获取输入,装入缓冲区
sscanf则是从输入中获取一个整数,放入size
1、fgets()函数是文件操作函数,为什么也可以对数组用
》》》 此函数操作时将显示设备当做一个流文件操作,不是对数组用
2、fgets(buf,256,stdin);和sscanf(buf,"%d",&size);这两句是什么意思
》》》 用户在显示屏上输入一个数字
3、嘿嘿,我一点变长数组的核心我都还没有理解到
》》》这就是一个指针的动态分配内存的使用,与数组没有关系。只是可以考虑将指针当数组用,这样就可以改变所谓数组的大小。
理解什么是数组,如果只是需要这种没意义的功能
链表就是动长数组,功能更齐全