2015-02-09 82 views
0

我的目標是創建一個fisrt我的自定義struct類型。 運行時,打印出24 不明白爲什麼:struct.field返回另一個值,爲什麼?

#include <stdio.h> 
typedef struct strktura { 
    int number; 
    char name; 
} strktura; 

strktura new_one(int number, char name){ 
    strktura a; 
    a.number=number; 
    a.name=name; 
} 

main() 
{ 
     strktura first=new_one(2,"A"); 
     printf("%d\n",first.number); 
} 

回答

5

您從new_one()忘了return

相關閱讀:從章6.9.1,第12段,C11文件,

如果}終止函數達到和函數調用的值由主叫方,則該行爲未定義。

所以,在你的代碼,而無需從new_one()並通過printf("%d\n",first.number);訪問返回值的return,你面對undefined behaviour

此外,值得一提,爲main()正確的語法是int main(),(和匹配的return 0是一個很好的做法。)

0

您需要在您的new_one添加

return a; 

()函數,以便結構從函數new_one()返回

相關問題