在void函数中返回一个结构指针

Return a struct pointer in void function

本文关键字:一个 结构 指针 void 函数 返回      更新时间:2023-10-16

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

我有一个struct和void函数()

struct my_struct 
{
int x;
}
void my_function(){
my_struct* x=10
}

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

我看到的大多数返回struct指针的例子都不使用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指针?请原谅我和帮助我,我是一个新的编程

首先:

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 };
}

如果有意义的话,最好在可能的情况下使用返回值。当需要从单个函数返回多个值时,可以使用第二种方法。

要向调用者报告值而不使用返回类型,可以填充调用者提供的缓冲区。这通常被称为"输出参数"。

void my_function( my_struct** result )
{
   my_struct* x = new my_struct{ 10 };
   //...
   *result = x;
}
相关文章: