C语言动态数组

2019-03-06  本文已影响0人  瓜尔佳Anthony

一维动态数组

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n,i;
    int *arr = NULL;
    printf("请输入所要创建的一维动态数组的长度:");
    scanf("%d",&n);
    if((arr=(int *)malloc(n*sizeof(int)))==NULL) {
        printf("分配内存空间失败,程序退出!");
        return 0;
    }
    for(i=0;i<n;i++){  /*向申请成功的数组中赋值*/
        arr[i]=i+1;
        printf("%d\t",arr[i]);
        if(0==(i+1)%4)
            printf("\n");  /*一行打印四个元素*/
    }
    if(arr != NULL){
        free(arr);  /*切记!使用完后记得要释放所申请的空间*/
    }
    return 0;
 }

二维动态数组

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n1,n2,i,j;
    int **arr = NULL;
    printf("请输入所要创建的动态数组的第一维长度:");
    scanf("%d",&n1);
    printf("请输入所要创建的动态数组的第二维长度:");
    scanf("%d",&n2);
    if((arr=(int **)malloc(n1*sizeof(int *)))==NULL){  /*第一维的创建*/
        printf("分配内存空间失败,程序退出!");
        return 0;
    }
    for(i=0;i<n1;i++){  /*创建第二维*/
        if((arr[i]=(int *)malloc(n2*sizeof(int)))==NULL){
            printf("分配内存空间失败,程序退出!");
            return 0;
        }
    }
    for(i=0;i<n1;i++){
        for(j=0;j<n2;j++){
            arr[i][j]=i*n2+j+1;  /*为申请成功的数组中赋值*/
            printf("%d\t",arr[i][j]);
        }
        printf("\n");
    }
    for(i=0;i<n1;i++){
        free(arr[i]);  /*先释放第二维*/
    }
    free(arr);  /*最后释放第一维*/
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读