jjdp.net
当前位置:首页 >> C 定义未知长度的数组 >>

C 定义未知长度的数组

除常量数组外,数组必须是定长的,如果不知道长度,有几种办法,固定分配一个认为不会出现的维度值,或者对数组进行动态分配,如:int *pArray,nCount; int Insert(int * pArray,int nCount,int nElement) { int *pInt; pInt = new int[nCount+1]; if(

嗯 确实可以这么做,这在程序中叫做动态数组或者数组的动态扩展,其原理就是声明一种类型的指针,然后在定义的时候给它赋数组的大小

数组定义必须明确数组长度,所以未知长度的数组是无法直接定义的.1. 如果你的数组在运行过程中可以确定,比如你输入一个整数来确定数组长度,这样的话可以通过动态内存分配实现.比如:int a; cin>>a; int *b=new int[a];2. 如果你的数组运行的时候都无法确定长度,比如你的数组可能会不断的添加新元素进去.这时候可以使用C++的标准库vector实现,比如:vector<int> array; array.push_back(10); array.push_back(10); array.push_back(10);

C语言是面向过程的语言,不支持类,要定义类你应该使用C++编写.C99支持变长数组,可以用变量定义数组长度,如:int n;scanf("%d",&n);int a[n];

1.可以定义一个动态数组2.定义一个指针

通常所在函数形参的时候会涉及到长2113度的处理.常见处理方法有52612个:1、指定接受长度.形参用4102两个参1653数,第一个参数为指向字符串的回指针,第二个参数为字符串的长度. 例子: Get_String(stringbuf[],num). 2、用特殊的结束符,比如\r\n为结尾答符号 例如: while(1) { if((stringbuf[i] == '\r') && (stringbuf[i] == '\n')) { break; } else { //user code } i ++; }

如果你永远不知道数组的长度,那么这样的数组没有什么实际意义,就不必要定义,当然也没有办法定义. 如果你总是要知道长度的,那就在知道长度后用动态内存分配函数malloc()来为它分配内存.当数组的长度要发生变化时你可以重新为它分配内存,把数组拷贝过来,而把原先分配的内存归还给系统…… 使用链表也能解决你的问题.

在stdlib.h中调用malloc内存分配函数,可以定义动态数组.一维的数字先定义int *p;然后写p=(int *)malloc(m*sizeof(int));m由用户自己定义.最后不要忘记释放内存.定义二维动态数组的方法类似.具体操作如下://以下建立的是m行n列的二维动

嗯,你的理解是对的.就按照你想的那个样子就可以.但是,使用new分配出来的空间,一定要使用 delete进行释放否则,会有内存泄露问题.比如:int len = 0;cin >> len;int* pData = new int[len];// .delte [] pData;

#include<vector> #include<iostream> #include<algorithm> using namespace std; int main() { vector<int> arr; //类似与动态数组的东西 int a; while(cin>>a,a) //读取a,且a不为0 arr.push_back(a); //存入arr sort(arr.begin(),arr.end()); //从小到大排序 cout<<"最小值:"<<arr[0]<<endl; cout<<"最大值:"<<arr[arr.size()-1]<<endl; }

网站首页 | 网站地图
All rights reserved Powered by www.jjdp.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com