c语言中想输入一个数组,可是数组的长度没有定,需要代码中一个变量来定数组的长度...?

rainbowsun11 2004-12-13 05:20:59
例如下面的代码:
main()
{
int a[1000];
int i,m,n;
scanf("%d",&n);
for (i =0;i<n;i++)
scanf("%d",&a[i]);
for (i = 0;i<n;i++)
printf("%d\n",a[i]);
}
本来我的意思是想输入一个数组,这个数组的长度由变量n来定.可是int a[]的[]里只能是常量,而且长度又不能为空,我就只能把这个数组的长度设的很大,可是这样很浪费空间.请问有什么方法可以解决这个问题?请各位大侠多多帮忙,赐教!!
...全文
3451 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
echobf 2005-01-17
  • 打赏
  • 举报
回复
能不能用链表实现二维结构呢? 例如下图:
口→口→口→口→口→口→NULL
↓ ↓ ↓ ↓ ↓ ↓
口 口 口 口 口 口
↓ ↓ ↓ ↓ ↓ ↓
口 口 口 口 口 口
↓ ↓ ↓ ↓ ↓ ↓
口 口 口 口 口 口
↓ ↓ ↓ ↓ ↓ ↓
NULLNULLNULLNULLNULLNULL


可以的,这应该是一个十字链表,看《数据结构〉
master5470 2005-01-17
  • 打赏
  • 举报
回复
up
hy198508 2004-12-22
  • 打赏
  • 举报
回复
Hi : greenteanet(扎扎实实打基础,保持一颗平常心。)


拜读了大虾的程序收益非浅哦!
不过发现点小问题:
1.if(NULL == (a = (int*)malloc(sizeof(int)*n)) //此句是不是少")" ?
2. 用exit(1);别忘了"# include <stdlib.h>" ,不然会有warning哦!
3. 'm' : unreferenced local variable

rainbowsun11 2004-12-15
  • 打赏
  • 举报
回复
谢谢各位的大力支持,受益菲浅啊
tianliang693 2004-12-14
  • 打赏
  • 举报
回复
顶~~!
问高手个问题~链表的成员还能做HEAD吗?
能不能用链表实现二维结构呢? 例如下图:
口→口→口→口→口→口→NULL
↓ ↓ ↓ ↓ ↓ ↓
口 口 口 口 口 口
↓ ↓ ↓ ↓ ↓ ↓
口 口 口 口 口 口
↓ ↓ ↓ ↓ ↓ ↓
口 口 口 口 口 口
↓ ↓ ↓ ↓ ↓ ↓
NULLNULLNULLNULLNULLNULL
greenteanet 2004-12-14
  • 打赏
  • 举报
回复
引用:
main()
{
int* a;
int i,m,n;
scanf("%d",&n);
if(NULL == (a = (int*)malloc(sizeof(int)*n))
{
printf("memmery error!\n");
exit(1);
}
for (i =0;i<n;i++)
scanf("%d",&a[i]);
for (i = 0;i<n;i++)
printf("%d\n",a[i]);
}

这个真的很不错..学习啦
master5470 2004-12-14
  • 打赏
  • 举报
回复
呵呵呵呵,记得内存回收阿


大家气氛很热烈阿
simpleyu 2004-12-14
  • 打赏
  • 举报
回复
恩,不错。呵呵,可是都没有free啊
bxqhk 2004-12-13
  • 打赏
  • 举报
回复
请问如何提问啊?
pcboyxhy 2004-12-13
  • 打赏
  • 举报
回复
几维的都一样,
int a[m][n]
比如a[i][j]==*(a+i*n+j)
奔跑的土猪 2004-12-13
  • 打赏
  • 举报
回复
楼上的都是高手!! 我正在用数组写程序呢 ! 好贴!
homtipo 2004-12-13
  • 打赏
  • 举报
回复
靠,绝对要顶。 我早就在为N维数组的动态定义苦恼了。居然有这么个好帖子。收藏了。感觉那个谁谁谁的在这方面很强呀。顶你了
Bread_0053 2004-12-13
  • 打赏
  • 举报
回复
n维的的话你就定义int*** **a好了
然后一个一个的malloc
Bread_0053 2004-12-13
  • 打赏
  • 举报
回复
2维的
int **a=NULL;
int m ,n;
m=n=0;
scanf("%d",&m);
scanf("%d",&n);
a=(int **)malloc(m);
for(int i=0;i<m;i++)
a[i]=(int*)malloc(n);
赋值是和二维数组赋值一样的
Ninstein 2004-12-13
  • 打赏
  • 举报
回复
呵呵
动态定义多维的呢?
高手写下撒
bingbing1981 2004-12-13
  • 打赏
  • 举报
回复
楼上都写完了
tcdddd 2004-12-13
  • 打赏
  • 举报
回复
用完记住free就行了
wangleiexe 2004-12-13
  • 打赏
  • 举报
回复
好像楼上的比我写的更周到,zan~~
wangleiexe 2004-12-13
  • 打赏
  • 举报
回复
不好意思,掉了一行
main()
{
int *a;
int i,m,n;
scanf("%d",&n);
a = (int*)malloc(sizeof(int)*n);
for (i =0;i<n;i++)
scanf("%d",(a+i));
for (i = 0;i<n;i++)
printf("%d\n",*(a+i));
}
wangleiexe 2004-12-13
  • 打赏
  • 举报
回复
用指针呀
main()
{
int *a];
int i,m,n;
scanf("%d",&n);
for (i =0;i<n;i++)
scanf("%d",(a+i));
for (i = 0;i<n;i++)
printf("%d\n",*(a+i));
}
加载更多回复(1)

69,371

社区成员

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

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