zoukankan      html  css  js  c++  java
  • 一个问题的三个实现 关于指针的传递

    以下三个实现都是用来通过全局变量serverIP, 在mycalloc()分配内存并附值, 最后再在主函数中显示!!
    ////////////////////////////////////////////
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    char *serverIP = NULL;

    void mycalloc( char **s )
    /*二级指针, 此时s指向serverIP的地址, 对(*s)的操作就等于对serverIP的操作, 即( *s == serverIP )*/
    {
    char buff[] = "daniel";
    int len = strlen( buff );
    *s = (char *)malloc( 10 );
    strncpy( *s, buff, len );
    (*s)[len] = '\0';
    return;
    }

    int main( void )
    {
    mycalloc( &serverIP ); //传递变量serverIP的地址
    printf( "%s\n", serverIP );
    free( serverIP );
    return 0;
    }
    ///////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    char *serverIP = NULL;
    char *mycalloc()
    {
    char *index;
    char buff[] = "daniel";
    int len = strlen( buff );
    index = (char *)calloc( 1, 10 );
    strncpy( index, buff, len );
    index[len] = '\0';
    return index; //返回指针
    }

    int main( void )
    {
    serverIP = mycalloc(); //复制返回指针
    printf( "%s\n", serverIP );
    free( serverIP );
    return 0;
    }
    /////////////////////////////////////////////////////
    /////////////////////////////////////////////////////
    /*
    直接以指针做参数( void mycalloc( char *s) ),在调用函数时参数将是这个指针的一个拷贝
    (一个临时变量),在函数中对指针(s)的所有操作,都是对这个临时变量的操作,而当函
    数退出后,这个临时变量也将死亡,因此原来的指针所指的内容其实什么也没变。而当参
    数是引用时( void mycalloc( char* &s ) ),就不会生成临时变量了,在函数中对指针(s)
    的所有的操作都相当于是在原来的指针上的操作.
    */

    #include <stdio.h>

    char *serverIP = NULL;

    void mycalloc( char* &s ) //参数引用
    {
    char buff[] = "daniel";
    int len = strlen( buff );
    s = (char *)calloc( 1, 10 );
    strncpy( s, buff, len );
    s[len] = '\0';
    return;
    }

    int main( void )
    {
    mycalloc( serverIP );

    printf( "%s\n", serverIP );

    free( serverIP );

    return 0;
    }
    /////////////////////////////////////////////////////
  • 相关阅读:
    java中的Runtime类
    java web 三大核心组件Filter
    springBoot 整合mybaits 逆向工程
    java内存区域之程序计数器
    spring mvc 注解整理(一)
    ELK 日志查询分析nginx日志
    npm 淘宝镜像
    两种网页截图功能
    url 编码解码
    对防火墙的理解
  • 原文地址:https://www.cnblogs.com/daniel/p/54373.html
Copyright © 2011-2022 走看看