怎么定义一个由自己输入数决定大小的数组?

fwyweiyi 2010-05-03 06:10:18
如题 ,求解~
...全文
3039 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2010-05-04
  • 打赏
  • 举报
回复 1
C99支持动态数组。

#include <stdio.h>

int main(int argc, char *argv[])
{
char array[argc];

printf("%d\n", sizeof(array));
return 0;
}
qiushuitian 2010-05-04
  • 打赏
  • 举报
回复
思路:自己输入数,因此分配多少空间必须是在运行的时候才知道,因此需要动态分配空间。
解决:可以用malloc 或者new动态在堆中分配需要的空间
flylkly 2010-05-03
  • 打赏
  • 举报
回复 1
需要动态分配,这样才能开出指定大小的数组

#include <stdio.h>
#include <malloc.h>
int main()
{
int n, i, *array = NULL;
scanf("%d", &n);
array = (int*)malloc(n*sizeof(int));//动态分配空间
for(i = 0; i < n; ++i)
scanf("%d", &array[i]);
for(i = 0; i < n; ++i)
printf("%d\t", array[i]);
free(array);//释放分配的内存空间
return 0;
}
huanmie_09 2010-05-03
  • 打赏
  • 举报
回复 1
[Quote=引用 5 楼 xiaozhi_5638 的回复:]
动态数组
int n;
scanf("%d",&n);
int *p=(int *)malloc(sizeof(int)*n);
//……
free(p);
[/Quote]
支持!
非兔子_Logic0 2010-05-03
  • 打赏
  • 举报
回复
只能是动态的分配内存

数组的定义时候是分配到栈上的,是固定了的

动态分配到堆上

如果想要数组很大,直接定义到全局或static就可以了
arong1234 2010-05-03
  • 打赏
  • 举报
回复
这种特性只有有限的几个编译器支持,还是少用为好。正确的还是应该用new /malloc
[Quote=引用 1 楼 coolsky600 的回复:]
c语言只能用链表模拟 c++可以用动态数组int a=3; int b[n];
[/Quote]
请叫我卷福 2010-05-03
  • 打赏
  • 举报
回复
动态数组
int n;
scanf("%d",&n);
int *p=(int *)malloc(sizeof(int)*n);
//……
free(p);
  • 打赏
  • 举报
回复
只能用链表了,没输入一个数,就插入一个节点,这样就可以模拟由输入数确定数组的大小了
fox000002 2010-05-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coolsky600 的回复:]

c语言只能用链表模拟 c++可以用动态数组int a=3; int b[n];
[/Quote]

C++ 可以用 vector
fox000002 2010-05-03
  • 打赏
  • 举报
回复
这个只能动态分配内存

int n;
scanf("%d", &n);

int * pbuf = malloc(sizeof(int)*n);

/* ... */

free(pbuf);


吴明治 2010-05-03
  • 打赏
  • 举报
回复
c语言只能用链表模拟 c++可以用动态数组int a=3; int b[n];

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧