-4

我是新的 C++ 编程,刚开始使用结构和指针,我有一个疑问。

我有一个结构和无效函数()

struct my_struct 
{
int x;
}

void my_function(){

my_struct* x=10

}

我需要将 my_struct* x 的值返回给调用函数。

我看到的大多数返回结构指针的示例都没有使用 void function() 而是像这样使用

struct my_struct 
    {
    int x;
    }

    struct my_struct* my_function( int* x){

    //assign the value for X and return by assign a reference `&` from caller function

    } 

那么不可能从 void 函数返回结构指针,还是我需要使用 void 指针?请多多包涵并帮助我,我是编程新手。

4

2 回答 2

1

首先:

void my_function() {
    my_struct* x=10
}

是非法的。我认为您没有完全理解指针的含义。要返回一个值,您必须:

  • 要么设置一个返回值my_struct* my_function()
  • 或定义哪个外部变量应存储返回值:my_struct* my_function(my_struct**);.

以下是一些使用动态分配的示例:

my_struct* my_function() {
    return new my_struct { 10 };
}

或者:

void my_function(my_struct** var) {
    *var = new my_struct { 10 };
}

如果有意义,最好尽可能使用返回值。当您需要来自单个函数的多个返回值时,您可以使用第二种方法。

于 2013-03-16T19:49:42.380 回答
0

要在不使用返回类型的情况下向调用者报告值,您可以填写调用者提供的缓冲区。这通常称为“输出参数”。

void my_function( my_struct** result )
{
   my_struct* x = new my_struct{ 10 };
   //...
   *result = x;
}
于 2013-03-16T19:45:09.220 回答