函数中返回指针、函数中返回多个变量

函数中返回指针及关键字static

int* func(); //函数声明,或叫函数原型。
int main(){
    int* n = func();
    printf("n = %u\n", n);
    return 0;
}

int* func(){
    int n1 = 100; //函数结束时,n1被回收
    //static int n1; //加上static关键字,函数结束时不会被回收
    return &n1; //返回指针
}

上面结果运行时会报错,为什么?怎么解决?

  • 原因:因为函数中的变量是相互独立的,即使变量名称一样。因此func函数结束时,变量n1被回收。
  • 解决:若不想让变量n1被回收,可在变量n1前面加上关键字static即可

函数名返回多个变量,就像:scanf("%d%d", &d1, &d2);

void mfunc(int** a, int** b){
    int x = 100;
    int y = 200;
    *a = &x; //返回指针
    *b = &y;
}

int main(){
    int* a = NULL; //由stdio.h中定义 #define NULL 0;
    int* b = NULL;

    mfunc(&a, &b); //因mfunc函数形参是二级指针,因此需要传入一级指针
    //如果a、b不为NULL,则说明mfunc函数修改成功
    if(a != NULL && b != NULL){ //空指针
        printf("a = %u\t b = %u\n", a, b);
    }

    return 0;
}

 上面打印出:a = 6421980      b = 6421976  说明返回多个变量成功。类似scanf函数返回多个变量也是一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值