[英]How to return three numbers in a function without using array or pointer in C?
问题:
编写一个接受三个整数的程序,然后按顺序打印并反转。 使用三个功能,一个用于读取数据,一个用于按顺序读取它们,另一个用于以相反顺序打印。
该计划(未完成):
#include <stdio.h>
int accept(){
int x, y, z;
printf("Please enter three integers: \n");
scanf("%d %d %d", &x, &y, &z);
return x, y, z;
}
int main(){
x, y, z = accept();
}
错误:错误:'x'未声明(首次在此函数中使用)| 注意:每个未声明的标识符仅针对它出现的每个函数报告一次 错误:'y'未声明(首次使用此功能)| 错误:'z'未声明(首次在此函数中使用)|
如何修改此程序,以便我可以在不使用数组或指针的情况下返回三个变量? 或者不使用那些是不可能的?
您可以创建包含这三个值的结构
typedef struct MyStruct
{
int a, b, c;
} MyStruct;
然后向函数传递一个指向结构实例的指针(旁注:总是用指针执行此操作,因为它更有效,因为它只传递一个8字节的值。传递结构本身意味着(如果我没记错)编译器将结构作为参数传递时,会尝试将结构拆分为它的值
扩大我的评论。 这不是合理的代码,在实践中不推荐 ,但它是修改代码以实现多个返回值的要求而无需数组或指针(或结构)的一种方法。
#include <stdio.h>
int accept(char opt){
/* static variables remember their values between calls */
static int x, y, z;
if (opt=='x') return x;
if (opt=='y') return y;
if (opt=='z') return z;
/* any other value of opt, read in new values */
printf("Please enter three integers: \n");
return scanf("%d %d %d", &x, &y, &z);
}
int main(){
int x, y, z;
accept(' ');
x = accept('x');
y = accept('y');
z = accept('z');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.