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

来源:互联网 发布:淘宝网卖家申请 编辑:程序博客网 时间:2024/06/08 09:29

当数组长度需要由用户指定时,需要用到动态数组。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]);    free(p); // 释放申请的内存    return 0;}

这里写图片描述

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

#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;}

这里写图片描述

原创粉丝点击