首 页 行业热点 新车 试驾评测 养车用车 车型库

c++动态定义数组长度

发布网友

我来回答

1个回答

热心网友

你可以先定义一个全局指针变量(如果要求整型数组的话就是int* a,字符型就是char* a等),指针你可以把它理解成数组int a[],这里数组a就相当于int*a,但这时指针还没有分配内存空间,只要分配了就相当于数组,但比数组的优势在于可以动态定义长度,如果分配了空间之后a中存储的值就是分配的空间的位置 ,比如分配空间后a中值为2000,表明它指向2000这个位置,由于是全局变量,因此函数执行完,a也不会消失,因此一直都有a=2000(除非在函数中被重新分配了空间)

再分配内存区域,用new函数,比如整型指针,就用语句a=new int[n+1],就相当于此时已经定义了数组a[n+1],后面的操作可以就相当于有了a[n+1]该怎么用就怎么用

最后当你把数组使用完毕后,要释放掉内存空间,免得空间浪费,用delete释放掉内存空间,以后在想给a分配空间再用new分配就好了追问解释很详细,多谢了
请问一下二维数组怎么定义,比如我需要A[3][n],其中3是给定的常数不会变,n是根据用户输入而定
另定义L[m][n],其中m和n都是通过用户输入计算得到的
还有第二种情况类似表的append,在STL里找到了一个vector,感觉很有用的样子,如果大神知道怎么玩的话还请点拨一二

追答我直接说L[m][n]吧。首先定义一个指针变量int **a,然后分配空间a=new int*[m],此时表明给a分配了m个内存空间,你在看这个空间分配是int *,表明这m个内存空间都应该对应指针变量,但要注意此时只有a指向了一个内存区域,但这m个指针还未分配,因此还应用一个循环for(i=0;i,然后定义vectora,括号里面应该是数组你要存放的数据类型,如果你要定义一个字符型的数组a[10],就把int改为char就好了,此时用a.insert(pos,elem)表明在pos位置插入一个elem的数据,如果是a.insert(pos,n,elem)表明插入n个elem的拷贝,在使用这个容器的时候,不用声明数组长度,系统会根据实际情况进行调整,关于vector的相关函数有很多,你可以自己百度看看

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com