CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于动态数组问题~~程序不知道为什么运行了4个数就出错

楼主raygts(朱仔)2005-06-03 18:46:08 在 C/C++ / C语言 提问

#include   <stdio.h>  
  #include   <stdlib.h>  
   
  int   main(int   argc,   char   *argv[])  
  {  
           
      double   scand,swad;  
      //double   *   ptd;  
      static   int   array   =   0;  
      double   ptd[array];  
      int   i,j;  
     
       
   
      puts("Enter   the   values   (q   to   Quit)");  
   
    while(1)  
    {  
    printf("array   is   :%d   \n",array);  
      i   =   scanf("%lf",&scand);  
      if   (i   !=   1)  
      {  
          break;  
      }  
      //swad   =   scand;  
     
      ptd[array]   =   scand;  
      array++   ;  
    }  
      printf("Here   are   your   entries   \n   ");  
      printf("array   is   :%d   \n",array);  
      for(j   =   0;j<array;j++)  
      {  
          printf("%7.2f",ptd[j]);  
      }  
      system("PAUSE");  
      return   0;  
  }  
  arrary变量值为4的时候就出错了~~搞不懂~~请高手指教 问题点数:60、回复次数:6Top

1 楼lbing7(向青润老大学习!!!)回复于 2005-06-03 18:55:09 得分 0

static   int   array   =   0;  
      double   ptd[array];  
   
  .................................  
  动态数组不是这样定义的吧?  
   
  Top

2 楼lbing7(向青润老大学习!!!)回复于 2005-06-03 18:56:53 得分 10

没有一一开始就出问题就好了!  
   
  动态数组:  
   
  int   *p;//定义一个指针  
   
  p   =   malloc();//()里放你在设的大小,这样才算是动态的!Top

3 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-06-03 19:32:54 得分 40

#include   <stdio.h>  
  #include   <stdlib.h>  
   
  int   main(int   argc,   char   *argv[])  
  {  
           
  double   scand,swad;  
  static   int   array   =   0;  
  double   *ptd   =   (double   *)malloc(sizeof(double)   *   array);  
  int   i,j;  
     
  puts("Enter   the   values   (q   to   Quit)");  
   
  while   (1)   {  
  printf("array   is   :%d   \n",array);  
  i   =   scanf("%lf",&scand);  
  if   (i   !=   1)   {  
  break;  
  }  
  //swad   =   scand;  
     
  ptd[array   -   1]   =   scand;  
  array++   ;  
  ptd   =   (double   *)realloc(ptd,   array);  
  }  
  printf("Here   are   your   entries   \n   ");  
  printf("array   is   :%d   \n",array);  
  for   (j   =   0;   j   <   array;   j++)   {  
  printf("%7.2f",ptd[j]);  
  }  
  free(ptd);  
  system("PAUSE");  
  return   0;  
  }Top

4 楼thzhaosen(随风)回复于 2005-06-03 19:34:34 得分 5

不会吧,我是在vc++的环境下编译的啊,没有错的啊  
  你再试试看  
  Enter   the   values   (q   to   Quit)  
  array   is   :0  
  12  
  array   is   :1  
  23  
  array   is   :2  
  34  
  array   is   :3  
  45  
  array   is   :4  
  34  
  array   is   :5  
  34  
  array   is   :6  
  q  
  Here   are   your   entries  
    array   is   :6  
      12.00     23.00     34.00     45.00     34.00     34.00请按任意键继续   .  
  这是运行的结果,你看一下Top

5 楼yangfasheng(悟法:前面是绝路,希望在拐角)回复于 2005-06-03 19:35:44 得分 5

 
      //double   *   ptd;  
      static   int   array   =   0;  
      double   ptd[array];  
      =========================  
  可能是   array   没有初始化为一个常量;  
  数组大小必须定义为一个整形常量,  
  如果是动态数组,在分配内存空间时也要指定所要分配的空间的字节个数.Top

6 楼thzhaosen(随风)回复于 2005-06-03 19:36:38 得分 0

不好意思,忘了,应该改一下,那样定义数组是不对的,我把它改为静态数组了  
  int   main(int   argc,   char   *argv[])  
  {  
           
      double   scand;  
      //double   *   ptd;  
      static   int   array=0;  
      double   ptd[100];  
      int   i,j;  
  Top

相关问题

  • 一个数组参数传进去,为什么出错?
  • 我想使用pointer实现两个数组相加放到一个新数组中,怎么出错!??
  • 帮我看一下这个数组的传递在哪里出错了?
  • 【求助】问个数组+数组问题
  • a b c d 四个数组,
  • 两个数组合并
  • 一个数组的长度
  • 一个数组问题
  • 问一个数组问题
  • 一个数组的问题.

关键词

  • scand
  • ptd
  • swad
  • array
  • double
  • printf
  • include

得分解答快速导航

  • 帖主:raygts
  • lbing7
  • CMyMfc
  • thzhaosen
  • yangfasheng

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo