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
相关产品推荐
相关产品推荐

