精华内容
下载资源
问答
  • C语言实现动态数组大小

    千次阅读 2015-11-15 13:33:44
    C语言动态数组大小 C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。这带来了很大的不便,如果数组过小,不能容下所有数组,如果过大,浪费资源。 //C语言动态分配数组大小 #include #...

                                                                                    C语言动态数组大小

    C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。这带来了很大的不便,如果数组过小,不能容下所有数组,如果过大,浪费资源。

    //C语言动态分配数组大小
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
    	//从控制台获取数组大小
    	int N;
    	int *a;
    	int i;
    	printf("Input array length");
    	scanf("%d",&N);
        //分配空间
    	a=(int*)calloc(N,sizeof(int));
    	//输入数据
    	for(i=0;i<N;i++)
    	{
    		a[i]=i+1;
    		printf("%-5d",a[i]);
    	    if((i+1)%10==0){
    		printf("\n");
    		}
    	}
       free(a);
       a=NULL;
       printf("\n");
       return 0;
    }


    展开全文
  • C语言中怎么求动态数组大小

    千次阅读 2016-03-27 19:29:00
    解释:sizeof() keyword是求出对象所占用的内存空间的大小,so, sizeof(a)是算出整个数组占用的空间的大小。 由于是整数数组。一个整数在32位系统上占用4个字节,不同的系统数值可能不同, 用siz...

    先来个简单的样例

    int a[] = {1,2,3};

    int arr_len = 0;

    arr_len = sizeof(a)/sizeof(int);


    解释:sizeof() keyword是求出对象所占用的内存空间的大小,so, sizeof(a)是算出整个数组占用的空间的大小。

    由于是整数数组。一个整数在32位系统上占用4个字节,不同的系统数值可能不同, 用sizeof(int)能够计算出

    一个整数占用的内存空间大小。所以用sizeof(a)/sizeof(int)数组中有几个整数,也即算出了数组的大小。


    下边来个指针数组

    char *str[] = {"John", "Jim"};

    int str_len = 0;

    str_len = sizeof(str)/sizeof(char*);


    指针数组顾名思义数组中存放的都是指针。字符指针。

    我们能够用char *p = "I'm a worker.";

    指向一个字符串常量,而把这些指针放在一起不就是上边说的指针数组吗。也许我们用

    char*     str[]更能显示的看出上边是指针数组。

    既然是指针数组那sizeof(str)不就是几个指针占用的空间大小嘛。那除以一个指针所

    占用的空间大小不就能够计算出字符指针数组的大小了。


    把上边的样例变下

    char str[][20] = {"John", "Jim"};

    int str_len = 0;

    str_len = sizeof(str)/20*sizeof(char);

    字符指针数组变成了字符的二维数组。

    二维动态数组我们能够看成一个行不固定,列固定(20)的一个表。

    我们所要计算的就是有几行。sizeof(str)就是计算出这个表占用的总空间的大小,

    总空间的大小除以一行占用的空间大小就能够计算出有几行。那一行占用多大空间呢。我们知道一个单元格中存放的是一个char字符sizeof(char)就能够计算出一个单元格所占用的空间大小。那乘以列数(20)就算出一行占用空间的大小了。

    展开全文
  • 主要介绍了C#动态调整数组大小的方法,涉及C#中静态方法CreateInstance的使用技巧,非常具有实用价值,需要的朋友可以参考下
  • 今天发现,进行增加,删除,插入(理解为改变了数组大小),不去进行改变指针指向的内存长度是会报内存错误的 定义的一个动态数组类,有一个数组长度:m_nSize,有一个指针:*m_pData #if !defined _DYNAMICARRAY_H_...

    今天发现,进行增加,删除,插入(理解为改变了数组大小),不去进行改变指针指向的内存长度是会报内存错误的

    定义的一个动态数组类,有一个数组长度:m_nSize,有一个指针:*m_pData

    #if !defined _DYNAMICARRAY_H_
    #define _DYNAMICARRAY_H_
    
    #include<stdio.h>
    #include <stdlib.h>
    
    class CDArray
    {
    private:
    	int		m_nSize;		// 数组的元素个数
    	double	*m_pData;	// 存放数组的动态内存指针
    	
    
    private:
    	void	 Init();		// 初始化
    	void	 Free();		// 释放动态内存
    
    	inline	int	InvalidateIndex(int nIndex);	// 判断下标的合法性
    
    public:
    	CDArray();			// 缺省构造函数
    	~CDArray();		// 析构函数
    
    	int		Print();				// 输出显示所有数组元素的值
    	double	GetAt(int nIndex);				// 获取某个元素
    	int		GetSize();			// 获取数组大小(元素个数)
    	int     SetSize(int size);
    
    	int		SetAt(int nIndex, double dValue=6);	// 设置某个元素的值
    
    	int		SetnSize(int nSize);		// 重新设置数组的大小。注:若nSize小于原数组大小,可截断取前nSize个元素作为新数组的元素;若nSize大于原数组大小,新增的元素的值设置缺省值0即可
    	int		PushBack(double dValue);		// 追加一个新的元素到数组末尾
    	int		DeleteAt(int nIndex);			// 从数组中删除一个元素
    	int		InsertAt(int nIndex, double dValue);	// 插入一个新的元素到数组中
    
    
    	CDArray(int nSize, double dValue);	// 其他构造函数,设置一定数组大小,并设置所有元素为0;当然还可以定义其他不同参数的构造函数,以方便用户使用
    	CDArray(const CDArray& arr);	// 拷贝构造函数(最好为所有包含动态分配成员的类都提供拷贝构造函数)
    	double 	operator[] (int nIndex) const; 	// 重载[]操作符,以便像传统数组那样通过a[k]来获取元素值
    	CDArray 	&CDArray::operator = (const CDArray& array);  	// 重载赋值操作符号"="
    };
    #endif // _DYNAMICARRAY_H_
    

    我们看看下面这几个接口实现:

    1.DeleteAt(int nIndex)

    int CDArray::DeleteAt(int nIndex)
    {
    	if (InvalidateIndex(nIndex))
    	{
    		double *temp=NULL;
    		temp=new double[m_nSize-1];
    		if (temp==NULL)
    		{
    			return 0;
    		}
    		for (int i=0;i<nIndex;i++)
    		{
    			temp[i] = m_pData[i];
    		}		
    		for (int j=nIndex+1;j <m_nSize;j++)
    		{
    			temp[j-1] = m_pData[j];
    		}
    		SAFEDELETES(m_pData);
    		m_pData=temp;
    		m_nSize--;
    		return 1;
    	}
    	return 0;
    	
    }
    

    2.PushBack(double dValue)

    int CDArray::PushBack(double dValue)
    {
    	double *temp=new double [m_nSize + 1] ;
    	for (int i=0;i<m_nSize;i++)
    	{
    		temp[i]=m_pData[i];
    	}
    	temp[m_nSize]=dValue;
    	SAFEDELETES(m_pData);
    	m_pData=temp;
    	m_nSize++;
    
    	return 1;
    }
    

    3.InsertAt(int nIndex, double dValue)

    int CDArray::InsertAt(int nIndex, double dValue)
    {
    	if (InvalidateIndex(nIndex))
    	{
    		double *temp=NULL;
    		temp=new double[m_nSize +1];
    		if (temp==NULL)
    		{
    			return 0;
    		}
    		for (int i=0;i<nIndex;i++)
    		{
    			temp[i] = m_pData[i];
    		}
    		temp[nIndex]=dValue;
    		for (int j=nIndex;j <m_nSize;j++)
    		{
    			temp[j+1] = m_pData[j];
    		}
    		SAFEDELETES(m_pData);
    		m_pData=temp;
    		m_nSize++;
    		return 1;
    	}
    	return 0;
    }
    

    从上面三个例子中,可以发现C++每次进行这些修改数组大小的操作
    ,都会需要重新定义一个临时指针temp,用于更多的操作空间(增删插)。
    并且都得在操作完之后,释放原来的指针m_pData,
    然后将m_pData指向进行过操作的临时指针temp,
    最后改变原数组大小m_nSize.

    还有一个要注意的点:每次指针指向一个新开辟的内存单元,都要进行判空,看是否开辟成功。
    如:
    double *temp=NULL; temp=new double[m_nSize +1]; if (temp==NULL) { return 0; }

    刚开始学,只能这样笨拙的写~哭辽,相信以后会更好!

    展开全文
  • 现在有个需求:我有一一大串不大小固定的数据需要添加到数组中,如果给数组固定死大小的话,不太好,后来找到了方法... //先定义大小为0的数组,后面经过temp.ToArray转换成数组,实现数组动态大小 string[] nullList = ...

    现在有个需求:我有一一大串不大小固定的数据需要添加到数组中,如果给数组固定死大小的话,不太好,后来找到了方法参考这个博客

                string[] roleRangeAllowUsername = new string[0]; //先定义大小为0的数组,后面经过temp.ToArray转换成数组,实现数组动态大小
                string[] nullList = new string[0]; //用来给temp初始化用
                List<string> temp = nullList.ToList(); 
                temp.Add(1);// 给temp添加数据
                roleRangeAllowUsername = temp.ToArray(); // 将temp转换成数组

     

    展开全文
  • 动态调整数组大小

    千次阅读 2018-03-15 21:47:15
    我们在使用数组时,如果设置长了,短了都不太合适,甚至还需要在运行时... //假设此时需要改变这个数组大小。 //1.可以设置一个新的数组存放它的数据 ,长度增加为你想要的。 int [] b = new int[6]; b[5] =...
  • C++创建动态大小数组

    千次阅读 2019-03-21 21:54:52
    #include <iostream> using namespace std; int main(int argc, const char * argv[]) { int size; cout <... "动态创建数组size:"; cin >>size; int array[size]; cout &l...
  • vector动态数组详解

    多人点赞 2020-12-16 17:14:06
    vector动态数组 咳咳,又是愉快的一天哈,icpc济南站马上就要开始,多少还有点紧张。也不知道能拿到什么样的成绩。。。咳咳,言归正传哈,今天咱学学vector动态数组,说实话这玩意用的就比较多了,我尽力写出它的...
  • 动态数组大小扩展

    2013-04-18 00:19:05
    private:  T *elems;  int count;   int arraySize; if(count>=arraySize) { T *old = elems; arraySize=2 * arraySize; elems=new int[arraySize];...for(int i=
  • Java自定义动态数组

    千次阅读 2019-02-15 00:38:33
    Java自定义动态数组 1、静态数组向动态数组转变 (1)静态数组,数组空间固定长度 这个数组空间总长为4,如果此时新插入一个数据就会报数组空间不足   (2)静态数组如何转变成动态数组 第一步:创建...
  • 如何获取动态数组大小

    千次阅读 2016-01-11 16:39:39
    动态数组 字符数组 可以通过strlen获取,获取的是实际的字符个数,不包含结束符\0;数组的大小无关;strlen的参数是指针还是字符数组的变量名都可以 普通数组 无法获取 普通数组 可以通过sizeof(arr)/sizeof...
  • C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量。一旦定义了一个数组,系统将为它分配一个固定大小的空间,以后不能改变,称为...而动态数组则不然,它可以随程序需要而重新指定大小。动...
  • 动态数组,自定义组数大小

    千次阅读 2017-09-05 21:23:40
    动态数组的创建
  • //数组大小为5,并初始化数组所有元素值为3 二维: cin>>m>>n;//m行n列 vector<vector > a(m, vector(n)); //这行注意两个> >中间要加空格,否则会被认为是重载>>运算符 for (i = 0; i ; i++) for (j = 0; j ; j+...
  • 1.对于字符串数组,可以用strlen( )函数来获取字符串数组的长度。  如:  char a1[] = "fwegwe";  cout   2.对于一般的数组,如:int a[ ] = { 40,45,438,12,46,899,450,321,210,785 ,10,57};  可以用size
  • c++动态数组的优点,创建和删除

    千次阅读 2019-04-14 07:43:04
    在vc中栈默认是1M;有时创建一个a[1000000000]甚至更长的数组时栈会不够用,...所以动态数组可以最大的限度节省内存空间。 一维动态数组的创建和删除 int *p = 0; p = new int[10];//创建 delete [] p; 二...
  • 柔性数组大小待定的数组 c语言中结构体最后一个元素可以是未知大小数组 如: struct SoftArray { int len; int array[]; //柔性数组,不占用存储空间 }; 柔性数组的使用方法:(创建一个大小指定的数组并...
  • 我们知道,C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。 这带来了很大的不便,如果数组过小,不能容下所有数组,如果过大,浪费资源。 请实现一个简单的动态数组,能够随时改变大小,...
  • excel vba真正的动态数组实例 一、动态数组的定义  动态数组的定义,一开始不需要给数组标明上界和下界。直接定义即可,如下面的代码:  Dim MyStr() As String  这样,就定义了一个动态数组及其...
  • 动态改变数组大小

    2013-10-31 12:49:02
       参考了http://blog.csdn.net/hurryjiang/article/details/6687821 的代码 /** * ... * 在数组后追加值 * &lt;/p&gt; * * &lt;pre&gt; * appendTo(null,"a") ...
  • 1.定宽数组 声明: int lo [0:15]; int lo [16]; //16个整数[0]...[15] int arr[0:7] [0:3]; // 等效与 int arr[8] [4]; 8行4列的数组 arr[8] [4]=1;// 设置数组的最后一个元素为1 知识1 – for 和 foreach 的...
  • 本文以实例分析了C++语言中关于[]静态数组和new分配的动态数组的区别,可以帮助大家加深对C++语言数组的理解。具体区别如下: 一、对静态数组名进行sizeof运算时,结果是整个数组占用空间的大小; 因此可以用sizeof...
  • 动态数组更灵活,可以在程序运行时根据需要指定数组大小。 这个动态数组功能有: 从头部插入元素;从尾部插入元素;根据下标访问、插入、删除元素等。 可用回调函数遍历动态数组。 以下是头文件dynints.h #ifndef ...
  • C++求动态数组长度(windows通过)

    千次阅读 2016-03-22 23:09:23
    vs编译器 //在首地址前16个字节、即4个类型、单元共128位、前存储数据是:数组长度 int *p=new int[100]; int size = *(p-4); cout; 结果:400;
  • [SV]动态数组大小

    千次阅读 2019-10-15 19:20:05
    如何获取动态数组大小呢? bit[7:0] b_array[]; b_array = new[2]; $size(b_array,1) 代表数组中元素的个数,此时为2 b_array.size()代表数组中元素的个数 $size(b_array,2) 代表数组元素的位宽,此时为8 ...
  • C++动态数组类模板

    2012-11-20 22:40:11
    动态数组类模板Array C++ //数组类模板声明 template class Array { public: Array(int sz = 50); Array(const Array<T> &A); ~Array(void); Array<T>& operator = (const Array<T> &rhs;); //重载=,使数组...
  • C语言的动态数组 VS C++的动态数组

    千次阅读 2018-08-26 19:37:09
    C语言中的动态数组 C语言中的动态数组就是动态内存分配的知识 首先,先看C语言的那些小秘密之动态数组https://blog.csdn.net/bigloomy/article/details/6615012,里面有关内存分配的内容,请看C语言的那些小秘密之...
  • 向量是一个能够存放任意类型的动态数组。 C++ 中 Vector 的使用 头文件 #include 需要使用 std 命名空间 using namespace std; 以下使用方法以 int 数据类型为例,使用时可自定义数据类型 注意:下文中区间为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 318,017
精华内容 127,206
关键字:

动态数组大小