zoukankan      html  css  js  c++  java
  • 指针的输入输出模型

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    //指针做输出,被调用函数分配内存 √
    //指针做输入,主调函数分配内存
    //求两段话的长度
    int getNum(char **myp1,int *mylen1,char **myp2,int *mylen2)
    {
        int ret = 0;
        char *tmp1 = NULL;
        char *tmp2 = NULL;
        tmp1 = (char *)malloc(100);
        if (tmp1 == NULL)
        {
            return -1;
        }
        tmp1 = strcpy(tmp1, "abcdefg");
        *mylen1 = strlen(tmp1);
        *myp1 = tmp1;    //间接修改实参p1的值
    
        tmp2 = (char *)malloc(100);
        if (tmp2 == NULL)
        {
            return -2;
        }
        tmp2 = strcpy(tmp2, "11222");
        *mylen2 = strlen(tmp2);
        *myp2 = tmp2;    //间接修改实参p2的值
        return ret;
    }
    
    int getNum_Free(char **myp1)
    {
        //if (myp1 == NULL)
        //{
        //    return;
        //}
        //free(*myp1);    //释放完指针变量,所指的内存空间
        //*myp1 = NULL;    //把实参改成NULL
    
        //或者这么写
        char *tmp;
        tmp = myp1;
        if (myp1 == NULL)
        {
            return -1;
        }
        tmp = *myp1;    
        free(tmp);
        *myp1 = NULL;
        return 0;
    }
    int main()
    {
        char *p1=NULL, *p2=NULL;
        int len1 = 0,len2 = 0;
        int ret = 0;
        ret = getNum(&p1, &len1, &p2, &len2);
        
        if (!ret)
        {
            printf("p1:%s
    ", p1);
            printf("p2:%s
    ", p2);
    
            getNum_Free(&p1);
            getNum_Free(&p2);
        }
        else
        {
            printf("func getNum():%d", ret);
        }
        system("pause");
        return 0;
    }
  • 相关阅读:
    MFC 参考资料(转)
    .net core 下运行 supersocket
    C# 发送 get 请求
    aardio写的16进制解析库
    Tomcat部署springboot项目
    debian10 arm64架构下安装mysql或者mariadb
    javascript进行hex、base64、bytes[]、string的互转
    css蒙层
    js识别手机型号做业务判断
    transform方法适配页面大小
  • 原文地址:https://www.cnblogs.com/linst/p/4857780.html
Copyright © 2011-2022 走看看