You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用带指针的函数输出两个值的返回值设置问题

C语言指针函数返回多个值的实现方案

现有代码问题说明

  • C语言单个基础类型返回值的函数最多只能返回1个值,你当前定义pointers返回int类型,无法满足printf需要两个参数的要求,基础逻辑不成立
  • 函数内定义的p、q都是局部指针变量,函数执行结束后会被销毁,且你当前没有写返回语句,运行会触发未定义行为

正确实现方案

你要通过指针返回两个值,最常用的实现是用输出型指针参数把值带回主调函数,代码如下:

#include <stdio.h>
// 两个int类型的指针参数用来承接输出结果
void pointers(int i, int *res1, int *res2) {
    int *p, *q;
    p = &i;
    q = p;
    // 对指针解引用后赋值,修改主调函数中变量的值
    *res1 = *p;
    *res2 = *q;
}

int main() {
    int a, b;
    // 传入外部变量的地址给函数
    pointers(10, &a, &b);
    printf("%d %d", a, b);
    return 0;
}

运行上述代码就会输出你预期的10 10。

内容的提问来源于stack exchange,提问作者guiromero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:54:05