鱼C论坛

 找回密码
 立即注册
查看: 4231|回复: 18

calloc 数组长度不必初始化

[复制链接]
发表于 2011-11-22 18:52:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 研学会 于 2011-11-22 20:18 编辑


  1. /*功能:实现以为数组a[i],i可自己根据需要输入*/
  2. /*时间:2011年11月22日18:50:17*/
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. void main(void)
  6. {
  7.         int x;
  8.         printf("Input seq ");
  9.         scanf("%d",&x);
  10.         int *p;
  11.         p=(int *)calloc(x,sizeof(int));
  12.         int i;
  13.         for(i=0;i<x;i++)
  14.         {
  15.                 printf("Input a[%d]:\n",i);
  16.                 scanf("%d",*p+i);
  17.         }
  18.         printf("Output a[i]\ni=");
  19.         scanf("%d",i);
  20.         printf("%d",*p+i);
  21. }
  22. /*备注:calloc(n,size()) 实现开辟n个大小为size的连续内存*/

  23. 为什么会不行??
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 19:11:19 | 显示全部楼层
{:1_1:}                                                   
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 20:14:27 | 显示全部楼层
本帖最后由 研学会 于 2011-11-22 20:18 编辑


                               
登录/注册后可看大图
谁来帮帮忙实现出错呀,可程序没错!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 20:28:29 | 显示全部楼层
scanf("%d",*p+i);
改为scanf("%d",p+i);
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 21:24:48 | 显示全部楼层
  1. /*功能:实现以为数组a[i],i可自己根据需要输入*/
  2. /*时间:2011年11月22日18:50:17*/
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. void main(void)
  6. {
  7.         int x;
  8.         printf("Input seq ");
  9.         scanf("%d",&x);
  10.         int *p;
  11.         p=(int *)calloc(x,sizeof(int));
  12.         int i;
  13.         for(i=0;i<x;i++)
  14.         {
  15.                 printf("Input a[%d]:\n",i);
  16.                 scanf("%d",p+i);
  17.         }
  18.         printf("Output a[i]\ni=");
  19.         scanf("%d",i);
  20.         printf("%d",*p+i);
  21. }
  22. /*备注:calloc(n,size()) 实现开辟n个大小为size的连续内存*/
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 21:28:02 | 显示全部楼层
本帖最后由 研学会 于 2011-11-22 21:31 编辑


                               
登录/注册后可看大图
谢谢你!可以实现输入了,但输出不了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 21:59:23 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 22:13:37 | 显示全部楼层
领教了,这个对我有用。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 22:24:39 | 显示全部楼层
本帖最后由 小磊 于 2011-11-22 22:28 编辑

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void main(void)
  4. {
  5. int x;
  6. printf("Input seq ");
  7. scanf("%d",&x);
  8. int *p;
  9. p=(int *)calloc(x,sizeof(int));
  10. int i;
  11. for(i=0;i<x;i++)
  12. {
  13. printf("Input a[%d]:\n",i);
  14. scanf("%d",p+i);
  15. }
  16. printf("Output a[i]\ni=");
  17. scanf("%d",&i);
  18. printf("%d",*(p+i));
  19. }
复制代码

哎  粗心咯..............

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 22:39:38 | 显示全部楼层
本帖最后由 研学会 于 2012-5-27 22:44 编辑

啊兄弟们,在一位的基础上实现二位数组了
  1. /*功能:实现二位数组a[i][j],i,j可自己根据需要输入*/
  2. /*时间:2011年11月22日18:50:17*/
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. void main(void)
  6. {
  7.         int x,y,i,j;
  8.                 int * p;
  9.         printf("Input seq a[x][y] ");
  10.         scanf("%d %d",&x,&y);
  11.         p=(int *)calloc(x*y,sizeof(int));
  12.         for(i=0;i<x;i++)
  13.                 for(j=0;j<y;j++)
  14.               {
  15.                       printf("Input a[%d][%d]:\n",i,j);
  16.                       scanf("%d",(p+j+i*y));
  17.               }
  18.         for(i=0;i<x;i++)
  19.         {
  20.                 for(j=0;j<y;j++)
  21.                 {
  22.                        printf("a[%d][%d]=%d\t",i,j,*(p+j+i*y));
  23.                 }
  24.                 printf("\n");
  25.         }
  26. }
复制代码

/*备注:calloc(n,size()) 实现开辟n个大小为size的连续内存*/
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 22:40:27 | 显示全部楼层
本帖最后由 研学会 于 2011-11-22 22:41 编辑

呵呵,谢谢你们了兄弟们
真开心,我那个老师还说实现不了,我一个晚上就实现了,跟你们在一起太爽了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 22:51:56 | 显示全部楼层
又不对了,而为这个指针printf("%d\n",*(p+i)+j);不对吧,谁来帮帮忙
   
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 22:54:23 | 显示全部楼层
p = (int *)calloc(3, size(int));
在已经确定 x = 3 后,如何再让p变成 4个元素的数组呢?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 23:03:37 | 显示全部楼层
本帖最后由 研学会 于 2011-11-22 23:04 编辑

我想想,你讲具体点
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 23:11:24 | 显示全部楼层
本帖最后由 Mr.C 于 2011-11-23 00:09 编辑
  1. 我有个比较二的思路,
  2. p = (int *)calloc(x, size(int));
  3. q = (int *)calloc(x+1, size(int));
  4. for(i = 0; i<x; i++)
  5. {
  6.         q+i = p+i;
  7. }
  8. p = q;
  9. 这样p的容量就加了1。而且末位元素初始值是0。
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-23 00:18:04 | 显示全部楼层
有点难度 0.0
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-23 11:13:52 | 显示全部楼层
本帖最后由 研学会 于 2011-11-23 11:27 编辑

  1. /*功能:calloc(n,size())实现数组数组长度自己输入*/
  2. /*时间:2011年11月22日18:50:17*/
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. void main(void)
  6. {
  7.         int x,y;
  8.         printf("Input seq a[x][y] ");
  9.         scanf("%d %d",&x,&y);
  10.         int *p;
  11.         p=(int *)calloc(x*y,sizeof(int));
  12.         int i,j;
  13.         for(i=0;i<x;i++)
  14.                 for(j=0;j<y;j++)
  15.               {
  16.                       printf("Input a[%d][%d]:\n",i,j);
  17.                       scanf("%d",(p+j+i*y));
  18.               }
  19.         for(i=0;i<x;i++)
  20.         {
  21.                 for(j=0;j<y;j++)
  22.                 {
  23.                        printf("a[%d][%d]=%d\t",i,j,*(p+j+i*y));
  24.                 }
  25.                 printf("\n");
  26.         }
  27. }
  28. /*备注:calloc(n,size()) 实现开辟n个大小为size的连续内存*/
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-23 11:18:21 | 显示全部楼层
本帖最后由 研学会 于 2011-11-23 11:23 编辑

QQ截图20111123112434.png
到此,大功告成,谢谢各位的帮忙!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-23 19:30:49 | 显示全部楼层
恭喜,我也有收获。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-9 14:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表