美文网首页
1数据结构之show展示数组代码

1数据结构之show展示数组代码

作者: 定一 | 来源:发表于2020-05-23 12:53 被阅读0次
    #include<stdio.h>
    #include<malloc.h>      //包含了malloc函数 
    #include<stdlib.h>      //包含了exit函数 
    
    struct Arr 
    {
        int *pBase; //存储数组第一个元素的地址 
        int len;    //数组所能容纳的最大元素的个数 
        int cnt;    //当前数组有效元素个数 
    };
    
    void init_arr(struct Arr *pArr,int length); //初始化数组 
    void show_arr(struct Arr *pArr);    //展示 
    
    int main(){
        struct Arr arr;
        init_arr(arr);
        show_arr(&arr);//将arr的地址赋给形参
        return 0;
    }
    
    void init_arr(struct Arr *pArr,int length){  
    
        pArr->pBase=(int*)malloc(sizeof(int)*length);//为其分配内存
    //此时分配的有24个字节,但是只是把第一个字节赋给pBase
        if(NULL==pArr->pBase){
            printf("动态内存分配失败\n");
            exit(-1);//终止整个程序       
        } 
        else{
            pArr->len=length;
            pArr->cnt=0;
            return ;
        } 
    }
    
    bool is_empty(struct Arr *pArr){//接收结构体变量的地址【3】
        if(0==pArr->cnt)
            return true;
        else
            return false;   
    }
    
    void show_arr(struct Arr *pArr){//【1】
        if(is_empty(pArr)){//&pArr是取地址,但是传到show_arr中的pArr已经是地址了,所以不用再加取地址符号了。
            printf("数组为空!\n"); 
        }else{
            for(int i=0;i<pArr->cnt;++i)
           // 【2】    printf("%d  ",pArr[i]);不可以这样写
                printf("%d  ",pArr->pBase[i]);
            printf("\n");
        }
    } 
    
    

    运行结果如下:


    image.png

    【1】:main函数调用show_arr函数,show_arr函数调用is_empty函数
    【2】:因为pArr是结构体的变量的地址,所以不可以这样写,如果pArr是数组名,那么就可以这样写。
    【3】:如下代码也可以判断数组是否为空,但是没有实际意义,他的意思的判断整型i是否为0,该函数的目的是判断数组是否为空,所以应该传过去一个数组比较好

    bool is_empty(int i){
        if(0==i)
            return true;
        else
            return false;   
    }
    

    相关文章

      网友评论

          本文标题:1数据结构之show展示数组代码

          本文链接:https://www.haomeiwen.com/subject/zgmkahtx.html