zoukankan      html  css  js  c++  java
  • 函数返回一个指针

    函数返回一个指针:

    #include <stdio.h>
    
    
    /** 
        照理说,这样是不可以的,是有问题的,因为在a传递进来的时候,a是有值的。
        但是返回的时候a已经销毁了。这个地址也不复存在了,这个到后面讲到内存的时候会具体详解。
    
        值的注意的是 这个 function1 返回的是一个 int* 是一个 返回int型指针的一个指针变量。
    
        返回的是一个指向int型数据类型的指针
    */
    
    int *function1(int a){
        return &a;
    }
    
    /** 
        不存在错误的回调,这个 可能有另外的分配方式,可以成功的返回这样一个指向字符数组类型的指针,指向“one” “two”“three”“anything”
        当然也可以写一个有错误的回调:
    
        值的注意的是 返回的是一个 字符数组类型的指针
    */
    char *function2(int a){
        if (a == 1)
            return "one";
        else if (a == 2) return "two";
        else if (a == 3) return"three";
        else return "anything";
    }
    
    /** 
        这个就是有bug的回调,因为 在要返回的时候 这个 开辟的空间已经消失了,不再存在这个 buf了,所以 这个 是有问题的,但是不影响返回
    
        值的注意的是 返回的是一个字符数组类型的指针
    */
    char *function3(int a){
    
        char buf[10];
        if (a == 1) strcpy(buf, "one");
        else strcpy(buf, "anything");
        return buf;
    }
    
    int main(){
    
        int *b = function1(3);
    
        printf("%d", *b);
    
        getchar();
    
    
    
    }
  • 相关阅读:
    牛客编程巅峰赛S1第8场
    【杭电多校4】2020 Multi-University Training Contest 4
    2020牛客暑期多校训练营(第七场)
    DFS【搜索1】
    2020牛客暑期多校训练营(第六场)
    2020牛客暑期多校训练营(第五场)
    大数模板
    分布式前后端分离项目开发步骤
    Linux 查看服务器硬件信息
    写在前面
  • 原文地址:https://www.cnblogs.com/letben/p/5225483.html
Copyright © 2011-2022 走看看