大家好: 有个问题想问一下! 现在有个二维数组 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的值便能循环输入了
|