函数返回一个指针

函数返回一个指针:

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值