函数返回一个指针

函数返回一个指针:

#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();



}
原文地址:https://www.cnblogs.com/letben/p/5225483.html