#include<stdio.h>
#include<stdlib.h>
int
main()
{
int
*a=NULL,n,i
scanf("%d",&n)
a=(int
*)malloc(n*sizeof(int))
for(i=0i<n++i)
a[i]=i
for(i=0
i<n
++i)
printf("%d
",a[i])
free(a)
a=NULL
return
0
}
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个元素的空间。
头文件:#include建议加上#include
就不需要stdlib了
具体实现:类型+指针=(类型*)calloc(数组大小,sizeof(类型));
例子:
#include
#include
//
#include
//这两个头文件任选一个就行了,上面的范围更大
int main()
{
int n,i
scanf("%d",&n)//输入数组大小
int *p=(int *)calloc(n,sizeof(int))//申请了一个长度为n的数组,用p指向首地址
for(i=0i