精华内容
下载资源
问答
  • C语言静态数组和动态数组

    千次阅读 2013-01-29 21:17:45
    1、对静态分配的数组和动态分配的数组分别使用sizeof获得其长度,结果是不一样的:   int a[10]; 则sizeof(a)等于10*sizeof(int)。  int* a=(int*)malloc(10*sizeof(int));则sizeof(a)等于sizeof(int*)。   2、...

    1、对静态分配的数组和动态分配的数组分别使用sizeof获得其长度,结果是不一样的:

            int a[10]; 则sizeof(a)等于10*sizeof(int)。

            int* a=(int*)malloc(10*sizeof(int));则sizeof(a)等于sizeof(int*)。

     

    2、数组名作为函数的参数时

        数组名作为函数的参数传递时,在函数内使用sizeof(a)(此处假设a为数组),结果都为指针的长度(无论a为静态数组还是动态数组),而非数组的实际长度。

    展开全文
  • C语言静态分配数组和动态分配数组

    千次阅读 2016-08-04 12:56:26
    C语言静态分配数组和动态分配数组: 1.静态分配数组: 指定数组的维数值: const unsigned array_size = 3; int ia[array_size] = {0,1,2}; 或: int ia[array_size] = {0}; ...
    C语言静态分配数组和动态分配数组:


    1.静态分配数组:


    指定数组的维数值:

    const unsigned array_size = 3;


    int ia[array_size] = {0,1,2};


    或:


    int ia[array_size] = {0};


    不指定数组的维数值:


    int ia[] = {0,1,2};


    字符串数组初始化:

    char ca1[] = {'C','+','+'};     //数组维数 = 3,没有'\0'


    char ca2[] = {'C','+','+','\0'};  //数组维数 = 4,显示'\0'


    char ca3[] = "C++";      //数组维数 = 4 ,字符串后面有'\0'




    2.动态分配数组:

    一维:


    int *array = (int *)malloc(sizeof(int)*n);

    int *p = array;


    二维:


    int **array = (int **)malloc(sizeof(int)*row);


    for(i = 0; i < row; ++i){


    array[i] = (int *)malloc(sizeof(int)*col);


    }


    int **p = array;


    展开全文
  • C语言静态数组常常接触,因为静态数组简单好用,使用动态数组不如使用链表,动态数组处境尴尬。

    C语言静态数组常常接触,因为静态数组简单好用,使用动态数组不如使用链表,动态数组处境尴尬。

    静态数组:

    int a[32]={0}

    动态数组:可以动态增加空间,但静态数组不能。

    动态数组结构体。

    struct dynamicArray
    {
    	void** addr;
    	//在堆区开辟数组
    
    	int capacity;
    	//数组容量
    
    	int Size;
    	//数组大小(指的是数组中元素的个数)
    };

     初始动态数组的容量。

    struct dynamicArray* initArray(int Capacity) {
    
    	if (Capacity <= 0) {
    		return;
    
    	}
    	struct dynamicArray* arr = malloc(sizeof(struct dynamicArray));
    	//申请结构体指针
    	if (arr)
    	{	
    		//arr不为空
    		
    		arr->capacity = Capacity;
    		arr->Size = 0;
    		arr->addr = malloc(sizeof(void*) * Capacity);
    	}
    	else
    	{
    		printf("fail\n");
    		return;
    	}
    	return arr;
    
    }

    向动态数组中插入数据。 

    //插入数据(data)向数组(arr)中的某一个位置(pos)
    void insertArray(struct dynamicArray* arr, int pos, void* data) {
    	if (arr) {
    
    		if (pos<0 || pos>arr->Size)
    		{
    			//无效位置,强制尾插
    			pos = arr->Size;
    		}
    	}
    	
    	if (data == NULL)
    	{
    
    	}
    	if (arr) {
    		if (arr->capacity == arr->Size)
    		{
    			//如果满空间,申请新空间
    			int newCapacity = arr->capacity * 2;
    
    			void** newSpace = malloc(sizeof(void*) * newCapacity);
    			//把原空间,拷贝新空间
    			if (newSpace)
    			{
    				memcpy(newSpace, arr->addr, sizeof(void*) * arr->capacity);
    				//释放原空间
    				free(arr->addr);
    				//指向新空间
    				arr->addr = newSpace;
    
    				arr->capacity = newCapacity;
    				//更新容量
    			}
    			
    		}
    
    		//插入数据到指定位置
    		for (int i = arr->Size - 1; i >= pos; i--)
    		{
    
    			arr->addr[i + 1] = arr->addr[i];
    
    		}
    		arr->addr[pos] = data;
    
    		arr->Size++;//更新大小
    	}
    }

    完整代码:

    链接:https://pan.baidu.com/s/1D-KYLNDsr9D4vWdVF5u-ww 
    提取码:kr6w

     

    展开全文
  • 静态数组和动态数组

    2016-12-01 11:02:08
    C语言中的数组,按照理解分为两...2 广义的数组,除静态数组外,还包括动态数组动态数组的本质为指针,如 TYPE *name; 对指针上可以用malloc等函数,分配内存空间,实现与静态数组类似的操作。对于动态数组,可以使

    C语言中的数组,按照理解分为两种:
    1 狭义的数组,指的是以
    TYPE name[M]...;
    形式定义的数组,也称为静态数组。静态数组在定义的时候就确定了数组的大小,无法在运行中对其做改变。
    2 广义的数组,除静态数组外,还包括动态数组。
    动态数组的本质为指针,如
    TYPE *name;
    对指针上可以用malloc等函数,分配内存空间,实现与静态数组类似的操作。对于动态数组,可以使用realloc函数,
    void * realloc(int size, void *p);
    重新分配参数p上的内存大小为参数size。
    新返回的的地址值,可能与参数p的原始地址值不同。
    该函数可以使p上可使用的内存大小调整到size字节,从而实现动态数组大小的调整。

    1.对静态分配的数组和动态分配的数组分别使用sizeof获得其长度,结果是不一样的:
            int a[10]; 则sizeof(a)等于10*sizeof(int)。
            int* a=(int*)malloc(10*sizeof(int));则sizeof(a)等于sizeof(int*)。

    2、数组名作为函数的参数时
        数组名作为函数的参数传递时,在函数内使用sizeof(a)(此处假设a为数组),结果都为指针的长度(无论a为静态数组还是动态数组),而非数组的实际长度。

    3.用指针指向string类的对象

    #include<iostream>  
    #include<string>  
    using namespace std;  
      
    int main(void)  
    {  
     string s = "hello";  
     //定义一个char类型指针,把string s的首元素地址赋给pt,则pt指向字符串s.  
     char *pt = &s[0];   
     cout << pt << endl;  
     return 0;  
    }  

    展开全文
  • C语言动态数组数据类型(动态数组库)动态数组库功能设计源文件、具体实现测试程序运行结果 动态数组库功能设计 静态数组一经创建大小不能改变。动态数组更灵活,可以在程序运行时根据需要指定数组大小。 这个...
  • C语言结构体数组指针的动态分配

    千次阅读 2020-03-03 23:44:28
    目前有在开发一个linux的底层驱动,涉及到很多种Modbus设备。程序是通过解析json配置文件,来获知到底...但是目前485种类是越来越多,而且规定每个485口下,最多可以挂64个设备,如果全部用静态数组的形式,则够主机...
  • 一、静态数组(NSArray) 1.静态数组(NSArray) 数组的内容不可以进行改变,并且在OC中数组只能存放对象类型不能存放C语言的基本数据类型OC的数组可以存放多种对象类型的数据例如[@"dfa", @2, pxd, cc,...
  • 在日常的编程中,我们难免会用到数组,很多时候由于静态开辟数组空间,导致很多空间浪费又或是空间不足,那么这时候就需要用到动态开辟数组内存。下面就介绍这两种初始化数组的方式: 一、静态分配 指定数组长度 //...
  • C语言数组

    2014-02-16 15:27:32
    注:1)常量表达式中可以包括常量符号常量.int a[3+5]是合法的,int a[n]是不合法的,C语言不允许对数组的大小作动态定义 2)如果在被调用的函数(不包括主函数)中定义数组,起长度可以是变量或非常量表达式,...
  • (1)在C语言中,数组一旦被定义后,占用的内存空间就是固定的,容量就是不可改变的,既不能在任何位置插入元素,也不能在任何位置删除元素,只能读取修改元素,我们将这样的数组称为静态数组。反过来说,如果数组...
  • 一维情况下: c中,数组的声明需要给出数组的维数,比如: int arr[5]; java中数组的声明不能给出数组的维数:比如: int[] arr; int arr[]; java在动态定义时给出:arr = new ...静态定义时无需给出 arr = new in...
  • 静态二维数组和动态二维数组(C语言

    千次阅读 多人点赞 2017-04-09 12:31:34
    1、理解什么是静态二维数组和动态二维数组 静态二维数组:可以理解为程序中如下定义的数组(定义一个3行4列的静态二维数组) int [3][4] = {{1,1,1,1}, {2,2,2,2}, {4,4,4,4}}; 动态二维数组:可以理解为程序中...
  • 静态数组2.动态数组3.错误用法集锦:1.数组的大小,需要使用常量定义,否者报错2.动态数组的大小,需要用指针接收3.静态数组在函数中:无法传递参数给零一个函数4.动态数组:可以做为参数传递给其他函数 0.堆 & ...
  • C语言数组的初始化及动态申请

    千次阅读 2014-09-25 12:19:18
    1.全局数组和静态数组在未初始化的时候,规定默认初始化成0; 2.局部数组就不一样了; #include int array1[5]={1,2,3}; static int array2[5]={1}; void main() { int arr1[5]={2}; int arr2[5]; static int ...
  • C语言——数组与指针

    2016-12-08 15:27:12
    数组和指针的区别 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 指针可以随时指向任意类型的...
  • C语言动态分配数组

    万次阅读 多人点赞 2018-06-21 12:57:42
    很多人在编写C语言代码的时候很少使用动态数组,不管什么情况下通通使用静态数组的方法来解决,在当初学习C语言的时候我就是一个典型的例子,但是现在发现这是一个相当不好的习惯,甚至可能导致编写的程序出现一些...
  • c语言是全局变量函数局部变量重名时,局部变量覆盖全局变量,所以进入到函数中查看全局变量的值,就不能直接用print了。 下面例子,打印出10的就是全局变量, (gdb) p n $1 = 1000 (gdb) p 'mystrcopy.c'::n $2...
  • 最近在复习数据结构,但再次重温线性结构中的连续存储章节时,通过使用C语言来模拟Java中的ArrayList的各个方法,感觉对Java中的ArrayList的体会有深刻了。遂想趁此机会将数组的知识点整理一下。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 440
精华内容 176
关键字:

c语言静态数组和动态数组

c语言 订阅