C语言练习题——动态数组

时间:2023-02-24 07:25:58

当数组长度需要由用户指定时,需要用到动态数组。malloc()函数可以在堆中申请一块内存,字节数由程序员指定。申请来的内存使用完之后需要用free()函数手动释放。

下面给出创建动态一维数组的例子

#include<malloc.h>
#include<stdio.h>

int main()
{
int* p = NULL;
int len;
int i;
printf("请输入数组的长度: \n");
scanf("%d",&len);
p = (int*)malloc(sizeof(int) * len);
for(i=0; i<len; i++)
p[i] = i;
for(i=0; i<len; i++)
printf("p[%d] = %d\n",i,p[i]);
return 0;
}

C语言练习题——动态数组

下面给出创建动态二维数组的例子

#include<malloc.h>
#include<stdio.h>

int main()
{
int** p = NULL;//创建一个二级指针,他存放的元素类型是一级指针
int n,m;//n行m列
int i,j;//行、列控制变量
printf("Please enter n,m\n");
scanf("%d %d",&n,&m);
p = (int**)malloc(sizeof(int*) * n);//把动态申请的内存分配给p
for(i=0; i<n; i++)//遍历n行
*(p+i) = (int*)malloc(sizeof(int) * m);//每行创建一个长度为m的一维数组
for(i=0; i<n; i++)//赋值
for(j=0; j<m; j++)
p[i][j] = i * j;
for(i=0; i<n; i++)//输出
{
for(j=0; j<m; j++)
printf("%5d",p[i][j]);
printf("\n\n");
}
free(p);//释放申请的内存
return 0;
}

C语言练习题——动态数组