-4

私は新しいC++プログラミングであり、構造体とポインターから始めたばかりで、疑問があります。

私は構造体とvoid関数()を持っています

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ポインターを使用する必要がありますか?plsは私に耐え、私がプログラミングに不慣れであるのを助けてくれます。

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

意味がある場合は、可能な場合は戻り値を使用することをお勧めします。1 つの関数から複数の戻り値が必要な場合は、2 番目の方法を使用できます。

于 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 に答える