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

  • 相关阅读:
    liunx centos下tomcat启动 Cannot find ./catalina.sh
    ls -bash: ls: command not found
    Linux CentOS下安装JDK1.7
    查看Linux Centos 系统信息 内核 CPU 系统版本 磁盘 分区 网络配置 进程 命令
    PHP自动捕捉监控致命错误(500错误) error_get_last() 获取最后一次发生错误信息 register_shutdown_function()在脚本停止执行时注册一个回调函数
    CI CodeIgniter 添加公共函数 全局函数 自定义函数
    express框架封装前戏
    怎奈风云多变换,骚完一波还一波,记PHP mongodb驱动的2019年11月用法
    linux ps sample
    利用python pika库实现rabbitmq客户端
  • 原文地址:https://www.cnblogs.com/yaozhenhua/p/9416526.html
Copyright © 2011-2022 走看看