CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

数组大小的重新定义及数组的传值问题!

楼主HEROWANG(让你望见影子的墙)2002-11-22 15:51:44 在 C/C++ / C语言 提问

大家好!我有两个问题,请教大家:  
  1。数组的重新定义问题!  
        问题如下:假如已经定义一个数组int   array[N][N],可不可以在程序的以后  
  重新扩展数组的大小,如果可以怎么实现?程序说明如下:  
        #define   N   10  
        mian()  
        {     int   array1[N][N];/*或为指针数组*/  
              :  
              :  
                              /*在某种需要时把数组的大小定义为   array[N+1][N=1]*/  
          }  
        请问有没有办法实现?有的话怎么实现,用程序说明   .  
  2.     数组的传值问题。用程序说明如下:  
        #   include<stdio.h>  
        #   define   N   10  
         
        main()  
        {  
          int   array[N]  
          :  
          :  
          ;  
          Func(int   x,int   y,array[1]);  
          :  
          :  
        }  
          Func(int   x,int   y,int   array[1])  
        {int   a,b;  
          :  
          :  
          Func(a,b,array[2]);/*需要传递数组的另外一个值*/  
        }  
        文字说明:   假如要向调用函数传递数组中的一个值,但在调用的子程序中  
  有递归调用这个子程序,需要传递数组中的另外一个数,请问在这种情况下,怎么  
  传递这个数组,请指教!当然除了把数组定义为全局变量外,还有没有其他方法? 问题点数:50、回复次数:7Top

1 楼cwanter(亚玛逊河上的渔夫)回复于 2002-11-22 16:24:45 得分 5

C++现在不支持动态数组。可以动态分配或用vector.  
  定义在main()中就行啊。Top

2 楼panda_lin(熊猫)回复于 2002-11-22 16:26:04 得分 5

必须用动态内存分配实现,或者用小菜的方法!Top

3 楼bugfree(八哥飞飞)回复于 2002-11-22 16:28:28 得分 10

see   my   solution:  
  ===========  
  1.   free(),   then   malloc()   from   the   heap   to   get   your   size.  
   
  2.     not   using   array   member,   just   use   array   pointer,   like   below:  
   
    Func(int   x,int   y,int*   arr)  
   
  if   you   want   to   get   array[2],   using   arr+2  
  Top

4 楼blue_coco(椰子)回复于 2002-11-22 17:06:28 得分 10

1。数组的重新定义问题!  
      #define   N   10  
      mian()  
      {     int   *pArr,   *pTemp;  
             
            pArr   =   (int*)malloc(sizeof(int)*N*N);  
            :  
            :  
             
            //如果要扩大数组。  
            pTemp   =   (int*)malloc(sizeof(int)*(N+1)*N);  
            memset(pTemp,   0,   sizeof(int)*(N+1)*N);  
            memcpy(pTemp,   pArr,   sizeof(int)*N*N);  
            free(pArr);  
            pArr   =   pTemp;  
            ..  
        }  
   
   
  2.     数组的传值问题。用程序说明如下:  
        #   include<stdio.h>  
        #   define   N   10  
         
        main()  
        {  
          int   array[N]  
          :  
          :  
          ;  
          Func(int   x,int   y,array);  
          :  
          :  
        }  
   
          Func(int   x,int   y,int   array+1)  
        {int   a,b;  
          :  
          :  
              a   =   array[1];  
            Func(a,b,array+1);  
        }  
  Top

5 楼ji_da_sheng(一个字)回复于 2002-11-22 20:28:45 得分 10

1、用remalloc()函数试试。  
  2、用指针不就可以啦,把整个数组都传递过去。Func(int   x,int   y,int   *array);当然也可以用引用。Func(int   x,int   y,int   &array);Top

6 楼winner_huang(猪头饼)回复于 2002-11-22 20:35:32 得分 5

我觉得最方便的方法就是用stl里的vector.  
  用指针传递Top

7 楼zhengguoshan(坚持-决不放弃)回复于 2002-11-23 20:34:21 得分 5

同意::   blue_coco(椰子)Top

相关问题

  • 定义不知大小的数组,怎么定义啊
  • 如何定义一个大小可变的数组。
  • 数组可以动态定义大小吗?
  • vb3 怎样定义一个400K大小的字符串数组?
  • 如何定义不固定的字符串数组的大小
  • 能不能用变量定义数组大小?
  • VB数组定义??
  • javascript 定义数组.
  • 我在主函数里定义一个数组,将数组名按照指针类型传进一个函数,在这个函数中,怎么得到数组的大小?
  • C#的数组不是说是动态的吗?我如何重新数组定义大小呢?

关键词

  • 指针
  • 数组
  • 定义
  • parr
  • ptemp
  • 传值
  • array
  • func
  • define n10
  • 传递

得分解答快速导航

  • 帖主:HEROWANG
  • cwanter
  • panda_lin
  • bugfree
  • blue_coco
  • ji_da_sheng
  • winner_huang
  • zhengguoshan

相关链接

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

广告也精彩

反馈

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