数组大小的重新定义及数组的传值问题!
大家好!我有两个问题,请教大家:
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




