C语言中定义动态数组的方法

Python028

C语言中定义动态数组的方法,第1张

long *buffer // 定义一个动态数组

...malloc.... // 动态分配 1000 单元

...realloc.... // 再添加 分配 1000 单元

free( buffer )// 取消 单元

=============================================

#include <stdio.h>

#include <malloc.h>

#include <stdlib.h>

void main( void )

{

long *buffer

size_t size

if( (buffer = (long *)malloc( 1000 * sizeof( long ) )) == NULL )

exit( 1 )

size = _msize( buffer )

printf( "Size of block after malloc of 1000 longs: %u\n", size )

/* Reallocate and show new size: */

if( (buffer = realloc( buffer, size + (1000 * sizeof( long )) ))

== NULL )

exit( 1 )

size = _msize( buffer )

printf( "Size of block after realloc of 1000 more longs: %u\n",

size )

free( buffer )

exit( 0 )

}

c语言动态数组扩充空间,主要是利用动态存储分配库函数来实现的,常用的有malloc函数和calloc函数。

malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针

例如:

char *x

x = (char *)malloc(10)//x就指向了包含10个字符单元的存储空间。

扩展资料:

函数定义

其函数原型为void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。

如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。

参考资料来源:百度百科-malloc函数

double *p

if(!(p=(double *)calloc(N,sizeof(double)))) exit(1)

若是整型:

int *p

if(!(p=(int *)calloc(N,sizeof(int)))) exit(1)