SYSTEMTIME st; // 現在の時刻を格納する変数 st GetSystemTime(&st); // この関数で st に時刻を取得 // 以下を参照できる // st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, // st.wMilliseconds |
#include <windows.h> #include <iostream> int main(int argc, char* argv[]) { // 現在の時刻を取得する例 SYSTEMTIME st; // 現在の時刻を格納する変数 // この関数の引数には変数 st に & がつけて渡されている。何故だろうか GetSystemTime(&st); std::cout << st.wMonth << "月" << st.wDay << "日" << "\n"; return 0; } |
上記の例では、 関数 GetSystemTime(&st); を実行することで、main 関数にて定義された変数 st に現在の時刻が格納された。 このとき、関数への引数に & がつけて渡されていることに注意して欲しい。 & をつけると変数のアドレスを取得できることはこれまで学んだ通りであるが、 では、なぜ & をつけて関数への引数としなければならないのか、理由を論ぜよ。 (もちろん、「アドレスを受け取るような関数として定義されているから」と言ってしまえばそれまでだが、 なぜアドレスを受け取るように定義しなければならないのかを聞いているのである) |
(ヒント) この課題で記述するプログラムで利用するメモリの模式図は以下のようになる。 現在の日時を取得する変数 st があることが読み取れるだろう。 (version という変数は昔の解説で使ったものなので無視してください) この変数 st に対し、他の関数から値を格納しようとしているのである。 そのような際にどうしなければならないか、今回の資料を元に考えること。 |