WEB 开发 开发语言 Java 技术 .Net 技术 数 据 库 硬件使用
图象媒体 Linux/Unix 移动平台 嵌入开发 Windows 专区 软件工程
Ajax 技术 | ASP | PHP | ASP.NET | C# | JSP | Access | Oracle | 网页设计 | Flash | 安全专题 | IIS | VC/MFC | Delphi | C/C++
 你的位置:首页 > 开发语言 > C/C++

二维数组动态添加数据
[ 来源:ITWENKU 时间:2007-4-17 10:08:01 | 浏览:369人次 ]

大家好:
有个问题想问一下!
现在有个二维数组 POINT polyline[]={{100,100},{200,200}};我想向这个数组中添加个新的数据,比如:{400,500},应该怎么写这个函数?
谢谢!


你的数组定义的有问题


POINT polyline[]={{100,100},{200,200}};
==》
POINT polyline[3]={{100,100},{200,200}}; //需要三个元素的空间,
//如果需要更多空间,根据需要定义POINT polyline[?]={{100,100},{200,200}};
POINT tmp={400,500};
polyline[2]=tmp; //添加元素

如果是POINT polyline[]={{100,100},{200,200}};这样数组只有2个元素的空间,
是无法添加元素的,添加操作是越界操作数组,可能引发致命错误 ~


hehe 数组定义的时候一定要明确大小的...


polyline 是指向这个数组的指针,polyline[]是根据数组里的元素来分配大小的呀,


用链表吧,可以动态添加, 如果坚持用数组,就动态malloc, free吧,


(1)你这个不是2维数组,是1维的.
(2)C/C++里,数组一旦定义,就不可以再改变大小.


polyline 是指向这个数组的指针,polyline[]是根据数组里的元素来分配大小的呀,


不知道你的POINT是什么,估计应该是一个类名而已吧,

那么polyline就是一个POINT数组的数组名,怎么是指向数组的指针??

勉强可以说是对应一个指针而已啊。

polyline[]的确是根据数组里的元素来分配大小的,

但当你这样做:POINT polyline[]={{100,100},{200,200}};

这时polyline这个数组的大小就定下来了,是2个POINT对象的大小,今后不能再变了。

所以你如果希望这个数组今后还可以往里加元素,那就要开始就指定它的大小,指定的大一些,

POINT polyline[num]={{100,100},{200,200}}; num要多大看你的需要了。

然后再往里插元素的时候就正常的polyline[n]=POINT(a,b)这样就行了


你那个数组虽然没写是多大,可是根据你初始化的内容已经分配了固定的空间:2个点那么大
所以你再往里面加就不对了

你可以弄成一个vector<POINT>
然后push_back(POINT就可以了)


你的数组是一个已经被编译器分配好地址大小的内存单元,
如果继续往里面添加数据元素,为造成数组越界。一般的
解决的方法是使用malloc函数,在内存单元不够的时候,
在使用realloc函数扩展内存。



POINT polyline[5][2]={{100,100},{200,200}};
for (int n=2;n<5;n++)
{scanf("%d",&POINT polyline[n]);
}
这样改变n的值便能循环输入了




 相关文章
·类与结构体混合使用
·怎样阻止程序访问栈中的内容?
·关于 Visual C++ 在 AMD 平台上 无法使用的问题
·《核心编程》中的几个问题
·请问:看看程序是什么错误?
·C++ Primer 4中的习题1.26,怎么解,在线等......

 推荐文章
关于高精度乘法的问题
求助c用函数编程
一个关于32位系统的问题
关于堆栈的问题!!!!!
监视哨搜索算法问题
一个矩阵的问题
srting类型的参数传递的问题
请问有什么 c++ design pattern 方面的好书么?
怎样将Turbo C 2.0中的C程序拷贝到 WORD中啊
请说一下 get()函数有什么用.
C++ 中有没现成的函数 可以获得 鼠标所在的某个控件上的整个区域?
我想换个语言用请前辈给点意见
 版权所有:IT问库
copyright © 2006 www.itwenku.cn all rights reserved.