return
関数呼び出し間の値について読み
、次のコード スニペットを試しました。
/* file structaddr.c */
#include <stdio.h>
#define MSIZE 10
struct simple
{
char c_str[MSIZE];
};
struct simple xprint(void)
{
struct simple ret = { "Morning !" };
return ret;
}
int main(void)
{
printf("Good %s\n", xprint().c_str);
return 0;
}
コードはエラーや警告なしでコンパイルされます。GCC 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)およびVisual C++コンパイラ
でテスト済み。
gcc -m32 -std=c99 -Wall -o test structaddr.c
cl -W3 -Zi -GS -TC -Fetest structaddr.c
出力:
おはようございます!
私は結果に少し混乱しています。
コードは正しく書かれていますか?
私の質問 :
関数
return
値 (上記の例の a の配列struct
) の可視性と、それらに適切にアクセスする方法は何ですか?値の存続期間はどこで終了し
return
ますか?