関数から返される構造変数がどのように実装されているかを誰かに説明してもらえますか。基本的に、関数から単一の変数が返されると、値はレジスタに入れられて返されます。しかし、構造体が戻る場合、これはどのように機能しますか。構造体がグローバルな場所にコピーされ、ポインタが返されると思います。これはコンパイラによって管理されます。私の理解は正しいですか?
これが私のサンプルプログラムです
#include <stdio.h>
#include <stdlib.h>
typedef struct ss
{
char name[10];
int val;
} HELLO;
HELLO *ptr=NULL;
HELLO myfun()
{
HELLO hel = {"Salil", 20};
ptr = &hel;
return hel;
}
main()
{
HELLO hel1;
hel1 = myfun();
if ( ptr ) printf("The val = %s \n", ptr->name);
}
ここでmyfun
、hel
変数はどのように返されますか?戻る間、変数はどこに保持されますか?