本文目录一览:
C语言中结构体数组的大小如何动态分配
结构体类型数据组就和我们平常定义的基本类型的数组一样,只不过是类型变了。
基本类型数组动态分配大小:
int* a = (int*)malloc(sizeof(int)*10) ; //动态分配10个大小的int类型的内存空间
结构体类型数组分配大小:
struct DIYDEFINE
{
int a;
char ch;
long lnum;
};
DIYDEFINE* pDiy = (DIYDEFINE*)malloc(sizeof(DIYDEFINE)*10); //动态分配10个大小的结构体类型DIYDEFINE的内存空间。
C语言中怎么定义动态的数组长度
动态数组长度,对于部分新的编译器,支持C99的,可以直接用变量定义数组
比如
func(int n)
{
int a[n];
....
}
不过 有些编译器不支持 会报错
就只能使用动态数组,也就是malloc
如
func(int n)
{
int *a;
a=(int *)malloc(sizeof(int)*n);
....
free(a);
}
C语言如何动态分配数组
1
定义指针。
2
使用malloc函数分配内存。
3
对数组进行访问即可。
对于一维动态数组,直接定义一维指针,并分配内存空间即可。
比如int类型的10个元素动态数组,写作
int
*a;
a
=
(int
*)malloc(sizeof(int)
*
10);
如果是多维数组,需要从高维向低维逐层分配。如二维数组10*100空间。
int
**a;
int
i;
a
=
(int
**)
malloc(sizeof(int
*)
*
10);
//
先分配10个int*的空间。
for(i
=
0;
i
100;
i
++)
a[i]
=
(int
*)malloc(sizeof(int)
*
100);
//
对于每个int*,分配100个元素的空间。
c语言中如何自定义数组长度
动态分配的数组可以自定义数组的长度,示例如下:
#include stdio.h
#include string.h
#include stdlib.h
int main()
{
printf("输入要分配的内存大小:");
int size;
scanf("%d", size); //输入自定义的数组长度
int *pstart = (int *)malloc(sizeof(int) *size);
if (pstart==0) {
printf("不能分配内存\n");
return 0;
}
memset(pstart, 0x00, sizeof(int) * size);
int inx;
for (inx=0; inx!=size; ++inx) pstart[inx] = inx;
for (inx=0; inx!=size; ++inx) printf("%d\t", pstart[inx]);
printf("\n");
return 0;
}