請問有人可以解釋一下,函數返回的結構變量是如何實現的。基本上當函數返回一個變量時,該值將被放入寄存器並返回。但在結構回報的情況下,這將如何工作。我假設該結構將被複制到某個全局位置並返回指針。這將由編譯器進行管理。我的理解是否正確?從C函數返回結構的機制是什麼?
這是
#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
變量返回我什麼樣的程序?變量在返回時將保存在哪裏?
Orr剛剛設置爲棧上的變量這個問題取決於您使用的調用約定。不要讓指針指向堆棧上的變量,並且要求調用者使用它。它會失敗並且難以檢測爲什麼 –