zoukankan      html  css  js  c++  java
  • 二级指针做输入_第3种内存模型

    #define  _CRT_SECURE_NO_WARNINGS 
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    //
    void main41()
    {
        int i = 0, j = 0;
        char **p2 = NULL;
        int num = 5;
        char *tmp = NULL;
        char tmpbuf[100];
        p2 = (char **)malloc(sizeof(char *) * num);
    
        for (i=0; i<num; i++)
        {
            p2[i] = (char *)malloc(sizeof(char)  * 100  ); //char buf[100];
            sprintf(p2[i], "%d%d%d", i+1, i+1, i+1);
        }
    
        //排序之前 
        printf("排序之前
    ");
        for (i=0; i<num; i++)
        {
            printf("%s 
    ", p2[i]);
        }
    
    
        //排序 交换的是 :指针
        /*
        for (i=0; i<num; i++)
        {
            for (j=i+1; j<num; j++)
            {
                if (strcmp( p2[i] , p2[j]) < 0)
                {
                    tmp = p2[i];
                    p2[i] = p2[j];
                    p2[j] = tmp;
                }
            }
        }
        */
    
        //排序 交换的时候内存
        
        for (i=0; i<num; i++)
        {
            for (j=i+1; j<num; j++)
            {
                if (strcmp( p2[i] , p2[j]) < 0)
                {
                    strcpy(tmpbuf, p2[i]);
                    strcpy( p2[i], p2[j]);
                    strcpy( p2[j], tmpbuf);
                }
            }
        }
        
    
        //排序之前 
        printf("排序之后
    ");
        for (i=0; i<num; i++)
        {
            printf("%s 
    ", p2[i]);
        }
    
        //释放内存
        for(i=0; i<num; i++)
        {
            if (p2[i] != NULL)
            {
                free(p2[i]);
                p2[i] = NULL;
            }
        }
    
        if (p2!=NULL) 
        {
            free(p2);
        }
    
    
        printf("hello...
    ");
        system("pause");
        return ;
    }
    
    //
    
    //
    char **getMem41(int num)
    {
        int i = 0;
        char **p2 = NULL;
        p2 = (char **)malloc(sizeof(char *) * num);
        if (p2 == NULL)
        {
            return NULL;
        }
    
        for (i=0; i<num; i++)
        {
            p2[i] = (char *)malloc(sizeof(char)  * 100  ); //char buf[100];
            sprintf(p2[i], "%d%d%d", i+1, i+1, i+1);
        }
        return p2;
    }
    
    
    
    
    
    void printMyArray03(char **myArray, int num)
    {
        int i = 0;
        for (i=0; i<num; i++)
        {
            //printf("%s 
    ", myArray[i]);
            printf("%s 
    ", *(myArray+i) );
        }
    }
    
    void sortMyArray03(char **myArray, int num)
    {
        int i =0 , j = 0;
        char *tmp = NULL;
        //排序
        for (i=0; i<num; i++)
        {
            for (j=i; j<num; j++)
            {
                if (strcmp(myArray[i], myArray[j]) > 0 )
                {
                    tmp = myArray[i];  //注意  交换的是数组元素 交换的是指针的值 //改变指针的指向
                    myArray[i] = myArray[j];
                    myArray[j] = tmp;
                }
            }
        }
    }
    
    void getMem41_Free(char **p2, int num)
    {
        int i = 0;
        //释放内存
        for(i=0; i<num; i++)
        {
            if (p2[i] != NULL)
            {
                free(p2[i]);
                p2[i] = NULL;
            }
        }
    
        if (p2!=NULL) 
        {
            free(p2);
        }
    
    }
    
    
    void main444()
    {
        int i = 0, j = 0;
        char **p2 = NULL;
        int num = 5;
        char *tmp = NULL;
        char tmpbuf[100];
        p2 = getMem41(num);
    
    
        //排序之前 
        printf("排序之前
    ");
        printMyArray03(p2, num);
    
        sortMyArray03(p2, num);
    
        //排序 交换的是 :指针
        /*
        for (i=0; i<num; i++)
        {
            for (j=i+1; j<num; j++)
            {
                if (strcmp( p2[i] , p2[j]) < 0)
                {
                    tmp = p2[i];
                    p2[i] = p2[j];
                    p2[j] = tmp;
                }
            }
        }
        */
        
    
        //排序之前 
        printf("排序之后
    ");
        printMyArray03(p2, num);
    
        getMem41_Free(p2,  num); //p2是一个野指针
    
        
    
        printf("hello...
    ");
        system("pause");
        return ;
    }

  • 相关阅读:
    最短路(Floyed、Dijkstra、Bellman-Ford、SPFA)
    查找技术
    简单线段树
    dfs
    bfs
    插件工具集合
    Web前端代码规范
    Javascript 判断手机横竖屏状态
    Git 笔记2
    git 笔记 1
  • 原文地址:https://www.cnblogs.com/yaozhenhua/p/9416526.html
Copyright © 2011-2022 走看看