• 函数返回一个指针


    函数返回一个指针:

    #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();
    
    
    
    }
  • 相关阅读:
    51Nod一级算法1002数塔取数问题
    素数筛法
    辗转相除法求最大公约数
    模型评估与选择
    Linux下的五种IO模型
    浮点类型丢失精度的问题
    Update操作浅析,一定是先Delete再Insert吗?
    SQLSERVER中返回修改后的数据
    MachineKey生成
    Katana的起源
  • 原文地址:https://www.cnblogs.com/letben/p/5225483.html
Copyright © 2020-2023  润新知