如何在不使用return语句的情况下将值返回给调用函数?

时间:2010-11-18 10:25:42

标签: c

函数proto类型,如int xxxx(int)或void xxx(int)

8 个答案:

答案 0 :(得分:5)

可以使用全局变量(或者, little 更好,你可以使用在文件范围内声明的静态变量),或者你可以改变你的函数来采取一个输出参数,但最终你应该使用return语句,因为它确实是它的用途。

答案 1 :(得分:4)

从C中的函数返回值的两种标准方法是使用return语句显式执行,或使用指针参数并在指针处指定对象。

还有其他方法,但我不会因为害怕增加世界上邪恶代码的数量而进入它们。你应该使用其中一个。

答案 2 :(得分:2)

使用传递参考:

void foo(int* x, int* y) {
 int temp;
 temp = *x;
 x* = *y;
 y* = temp;
}

void main(void) {
 int x = 2, y=4;
 foo(&x, &y);
 printf("Swapped Nums: %d , %d",x,y);
}

答案 3 :(得分:1)

  1. 您可以将一个全局变量分配给。
  2. 您可以传递一个存储整数的对象,如果您在函数中更改它,它也会在其他地方更改,因为对象不是值类型。
  3. 它还取决于您正在使用的编程语言。

    编辑:抱歉,我没有看到C标签,所以请忽略我的上一个声明

答案 4 :(得分:1)

通常,您为函数提供外部变量的引用。


void foo(int *value)
{
   *value = 123;
}

int main(void)
{
  int my_return_value = 0;
  foo(&my_return_value);
  printf("Value returned from foo is %d", my_return_value);
  return 0;
}

答案 5 :(得分:0)

简单的答案给出了一个原型,就像第一个你必须使用return语句的原型,因为int返回值指示它。

原则上可以做一些可怕的事情,例如将指针转换为int并将其作为参数传递,将其强制转换并修改它。正如其他人提到的那样,你必须确保你理解这样做的所有含义,并根据你的问题来判断你不会这样做。

答案 6 :(得分:0)

int wel();
int main()
{
        int x;
        x = wel();
        的printf( “%d \ n” 个中,x);
        返回0;
}
int wel()
{
注册int tvr asm(“ax”);
        tvr = 77;
}

在ubuntu机器上用GCC编译器编译。在borland编译器中,返回的方式不同。

答案 7 :(得分:0)

如果需要返回多个值,为什么不使用指向新分配结构的指针?

typedef struct { int a, char b } mystruct;
mystruct * foo()
{
    mystruct * s = (mystruct *) malloc(sizeof(mystruct));
    return s;
}

未经测试,但应该有效。